私用建構函式 (C# 程式設計手冊)
私用建構函式是一種特殊的執行個體建構函式。 它通常會用於只包含靜態成員的類別。 如果類別具有一或多個私用建構函式,而且沒有任何公用建構函式,則其他類別 (巢狀類別除外) 無法建立此類別的執行個體。 例如:
class NLog
{
// Private Constructor:
private NLog() { }
public static double e = Math.E; //2.71828...
}
宣告空的建構函式可防止自動產生無參數建構函式。 請注意,如果您未搭配建構函式使用存取修飾詞,預設仍會是私用的。 不過,通常會明確使用 private 修飾詞來指出無法具現化類別。
當類別沒有執行個體欄位或方法 (例如 Math 類別),或是您要呼叫方法以取得類別的執行個體時,可以使用私用建構函式來防止建立類別的執行個體。 如果類別中的所有方法都是靜態的,請考慮將整個類別變為靜態。 如需詳細資訊,請參閱靜態類別和靜態類別成員。
範例
以下是使用私用建構函式的類別範例。
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