私有構造函數是一種特殊的實例構造函數。它一般用在只包含靜態成員的類中。若是類具備一個或多個私有構造函數而沒有公共構造函數,則其餘類(除嵌套類外)沒法建立該類的實例。例如:編程
class NLog { // Private Constructor: private NLog() { } public static double e = Math.E; //2.71828... }
聲明空構造函數可阻止自動生成默認構造函數。注意,若是您不對構造函數使用訪問修飾符,則在默認狀況下它仍爲私有構造函數。可是,一般顯式地使用 private 修飾符來清楚地代表該類不能被實例化。xss
當沒有實例字段或實例方法(如 Math 類)時或者當調用方法以得到類的實例時,私有構造函數可用於阻止建立類的實例。若是類中的全部方法都是靜態的,可考慮使整個類成爲靜態的。有關更多信息,請參見靜態類和靜態類成員(C# 編程指南)。ide
下面是使用私有構造函數的類的示例。函數
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
注意,若是您取消註釋該示例中的如下語句,它將生成一個錯誤,由於該構造函數受其保護級別的限制而不可訪問:ui