【发布时间】:2011-05-30 18:06:36
【问题描述】:
这个问题是出于好奇。有没有区别:
public abstract class MyClass
{
public MyClass()
{
}
}
和
public abstract class MyClass
{
protected MyClass()
{
}
}
谢谢。
【问题讨论】:
标签: c# constructor public protected
这个问题是出于好奇。有没有区别:
public abstract class MyClass
{
public MyClass()
{
}
}
和
public abstract class MyClass
{
protected MyClass()
{
}
}
谢谢。
【问题讨论】:
标签: c# constructor public protected
抽象类中不应该有公共构造函数 抽象类型的构造函数只能由派生类型调用。因为公共构造函数创建类型的实例,而您不能创建抽象类型的实例,所以带有公共构造函数的抽象类型设计不正确。
【讨论】:
它们在所有实际用途中都是相同的。
但是由于您要求差异,我能想到的一个差异是,如果您使用反射搜索类的构造函数,那么匹配的 BindingFlags 将会不同。
BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
var constructor = typeof(MyClass).GetConstructor(flags, null, new Type[0], null);
这将在一种情况下找到构造函数,但在另一种情况下不会。
【讨论】:
就未来使用这段代码而言,没有区别。
【讨论】: