抽象类构造函数

Nil*_*han 11 c# oop

可能重复:
为什么我不能在抽象C#类上创建抽象构造函数?

抽象类的构造函数可以标记为"抽象"吗?

Nol*_*rin 18

在任何版本中,C#都不支持此功能.请注意,构造函数不会在派生类中继承,尽管它们可以"链接".这可能是你想要做的.

如果要表明派生类应该进行某种初始化,可以创建一个抽象Initialise方法,或者基类的构造函数(以及子类的间接)调用创建的方法.

作为一个侧面点,我不确定CLR(或相关的CIL语言)是否真的支持它 - 我怀疑它可能,但是由于刚刚提到的原因,它在C#中几乎没有用处.


Dar*_*rov 18

不,构造函数不能标记为抽象.在抽象类中,构造函数通常被标记为protected,至少这是我建议你做的.

  • 实际上,无论你是将它们标记为"protected"还是普通的`public`,都无关紧要,因为它们只能通过派生类中的链接来访问!说,从语义的角度来看,标记为"受保护"可能是明智的. (6认同)