簡體   English   中英

保護與公共構造函數的抽象類? 有區別嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM