Re: Почему конструкторы не наследуются?
От: Oyster Украина https://github.com/devoyster
Дата: 24.07.05 02:31
Оценка:
Здравствуйте, SilverCloud, Вы писали:

SC>В чём глубокий смысл сабжа в C#?


Вроде конструктор по умолчанию (без параметров) наследуется, если он не определён явно в наследнике. MSDN:

If a class contains no instance constructor declarations, a default instance constructor is automatically provided. That default constructor simply invokes the parameterless constructor of the direct base class.


А прочие... видимо, такое поведение было добавлено для лучшего контроля интерфейса класса (всегдя надо явно указывать все конструкторы класса кроме того, что по умолчанию) + видимо, решили, что так программисты будут допускать меньше ошибок "по недосмотру" (не будет возникать ситуаций, когда при добавлении нового конструктора в базовом классе он чудесным образом появится во всех наследниках, как в C++).

В общем-то, конструктор — не просто метод, конструктор инициализирует состояние объекта — логично, что базовый класс не может корректно проинициализировать своих наследников, поэтому каждый класс должен явно декларировать все свои конструкторы, даже если они просто вызывают base().

Всё изложенное выше — моё глубочайшее имхо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.