#c_sharp #net #ооп #методы
Ни как не могу понять в книге написано, что перегрузка методов невозможно с помощь ref Хотя у меня это получилось Another an = new Another(); int a = 0; an.SomeMethod(a); an.SomeMethod(ref a); class Another { public void SomeMethod(int a) { a = 1; } public void SomeMethod(ref int a) { a = 1; } } Может быть что то не так понял ?
Ответы
Ответ 1
Возможно, это не самый хороший перевод. Запрещена на самом деле вот такая ситуация: class Another { public void SomeMethod(out int a) { a = 1; } public void SomeMethod(ref int a) { a = 1; } } Это производит ошибку CS0063: Cannot define overloaded methods that differ only on ref and out. Причина состоит в том, что на уровне CLR out не существует, и кодируется как ref. Поэтому если бы это было разрешено, с точки зрения CLR это были бы две одинаковые сигнатуры. Отличие out от ref (то есть, то, что out-параметр обязательно должен быть инициализирован внутри метода) — внутреннее правило C#, CLR это не проверяет.
Комментариев нет:
Отправить комментарий