[英]protected vs public constructor for abstract class? Is there a difference?
這個問題是出於好奇。 之間有什么區別:
public abstract class MyClass
{
public MyClass()
{
}
}
和
public abstract class MyClass
{
protected MyClass()
{
}
}
謝謝。
對於所有實際目的,它們都是相同的。
但是,由於您要尋求差異,所以我能想到的一個差異是,如果您正在使用反射搜索類的構造函數,則匹配的BindingFlags將有所不同。
BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
var constructor = typeof(MyClass).GetConstructor(flags, null, new Type[0], null);
這將在一種情況下找到構造函數,但在另一種情況下找不到。
您不應在Abstract類中使用公共構造函數。抽象類型的構造函數只能由派生類型調用。 因為公共構造函數創建類型的實例,並且您不能創建抽象類型的實例,所以帶有公共構造函數的抽象類型的設計不正確。
在這里查看詳細信息http://msdn.microsoft.com/zh-cn/library/ms182126.aspx
就此代碼的將來使用而言,沒有區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.