2010-07-15 4 views

ответ

18

Номер C# не поддерживает это в любой версии. Обратите внимание, что конструкторы не унаследованы в производных классах, хотя они могут быть «прикованными». Вероятно, это то, что вы хотите делать.

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

В качестве побочного пункта я не уверен, поддерживает ли CLR (или родственный язык CIL), - я подозреваю, что это возможно, хотя из-за C# это мало используется по указанной только причине.

18

Нет, конструктор не может быть помечен как абстрактный. В абстрактных классах конструкторы обычно помечены как protected, хотя, по крайней мере, это то, что я бы рекомендовал вам делать.

+6

На самом деле неважно, будете ли вы отмечать их как «защищенные» или обычные «публичные», так как они доступны только через цепочку в производных классах! Утверждение, что маркировка как «защищенная», вероятно, разумна с семантической точки зрения. – Noldorin

+1

http://msdn.microsoft.com/en-us/library/ms182126(v=vs.100).aspx - разумный из авторитетной семантической точки зрения –

2

В принципе нет.

Если его реферат, вы должны переопределить его в конкретном дочернем классе, и вы не можете переопределить конструктор, а только перегрузить его.

Смежные вопросы