Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 抽象类构造函数_C#_Oop - Fatal编程技术网

C# 抽象类构造函数

C# 抽象类构造函数,c#,oop,C#,Oop,可能重复: 抽象类的构造函数可以标记为“抽象”吗?否。C#在任何版本中都不支持此功能。请注意,构造函数在派生类中不会被继承,尽管它们可以被“链接”。这可能就是你想要做的 如果希望指示派生类应该进行某种初始化,可以创建一个抽象的Initialise方法,或者基类(以及间接的子类)的构造函数在创建时调用的方法 另一方面,我不确定CLR(或相关的CIL语言)是否真的支持它——我怀疑它可能支持,尽管出于刚才提到的原因,它在C#中几乎没有什么用处。不,构造函数不能标记为抽象。在抽象类中,构造函数通常被标

可能重复:

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

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

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


另一方面,我不确定CLR(或相关的CIL语言)是否真的支持它——我怀疑它可能支持,尽管出于刚才提到的原因,它在C#中几乎没有什么用处。

不,构造函数不能标记为抽象。在抽象类中,构造函数通常被标记为受保护的,但至少我建议您这样做。

基本上不是


如果它是抽象的,你必须在一个具体的子类中重写它,你不能重写构造函数,只能重载它。

事实上,不管你是将它们标记为
受保护的
还是普通的
公共的
,因为它们无论如何都只能通过在派生类中链接来访问!这么说来,从语义的角度来看,标记为受保护可能是明智的从权威语义学的角度看感性