共用方式為


私用建構函式 (C# 程式設計手冊)

私用建構函式是一種特殊的執行個體建構函式。 它通常是用在只包含靜態成員的類別 (Class) 中。 如果類別具有一個或多個 private (私用) 建構函式,而且沒有任何 public (公用) 建構函式,則其他類別 (巢狀類別除外) 就不能建立這個類別的執行個體。 例如:

class NLog
{
    // Private Constructor:
    private NLog() { }

    public static double e = Math.E;  //2.71828...
}

空的建構函式宣告防止自動產生預設建構函式。 請注意,如果您不搭配存取修飾詞 (Modifier) 來使用建構函式,則它依然會根據預設值而成為 private (私用)。 然而,private 修飾詞通常用來明確指出無法對該類別執行個體化。

當類別沒有執行個體欄位或方法 (例如 Math),或是要呼叫方法取得類別的執行個體時,private (私用) 建構函式可以用來防止建立類別的執行個體。 如果類別中的所有方法都是靜態的,請考慮將整個類別變為靜態。 如需詳細資訊,請參閱靜態類別和靜態類別成員 (C# 程式設計手冊)

範例

以下是一個類別使用私用建構函式的範例。

public class Counter
{
    private Counter() { }
    public static int currentCount;
    public static int IncrementCount()
    {
        return ++currentCount;
    }
}

class TestCounter
{
    static void Main()
    {
        // If you uncomment the following statement, it will generate
        // an error because the constructor is inaccessible:
        // Counter aCounter = new Counter();   // Error

        Counter.currentCount = 100;
        Counter.IncrementCount();
        Console.WriteLine("New count: {0}", Counter.currentCount);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output: New count: 101

請注意,如果您將範例中的下列陳述式取消註解,這時將會產生錯誤,因為建構函式會因其保護層級而無法存取:

// Counter aCounter = new Counter();   // Error

C# 語言規格

如需詳細資訊,請參閱 C# 語言規格。 語言規格是 C# 語法和用法的決定性來源。

請參閱

參考

類別和結構 (C# 程式設計手冊)

建構函式 (C# 程式設計手冊)

解構函式 (C# 程式設計手冊)

private (C# 參考)

public (C# 參考)

概念

C# 程式設計手冊