Mar*_*lon 35 c# constructor protected public
这个问题出于好奇.是否有区别:
public abstract class MyClass
{
public MyClass()
{
}
}
Run Code Online (Sandbox Code Playgroud)
和
public abstract class MyClass
{
protected MyClass()
{
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
Mar*_*ers 31
它们对于所有实际目的都是相同的.
但是既然你要求差异,我可以想到的一个区别是如果你使用反射搜索类的构造函数,那么匹配的BindingFlags会有所不同.
BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
var constructor = typeof(MyClass).GetConstructor(flags, null, new Type[0], null);
Run Code Online (Sandbox Code Playgroud)
这将在一个案例中找到构造函数,但不会在另一个案例中找到.
She*_*Pro 16
在Abstract类中不应该有公共构造函数抽象类型的构造函数只能由派生类型调用.因为公共构造函数创建类型的实例,并且您无法创建抽象类型的实例,所以具有公共构造函数的抽象类型设计不正确.
看看这里的详细信息 http://msdn.microsoft.com/en-us/library/ms182126.aspx