私有構造函數(C# 編程指南)

私有構造函數是一種特殊的實例構造函數。它一般用在只包含靜態成員的類中。若是類具備一個或多個私有構造函數而沒有公共構造函數,則其餘類(除嵌套類外)沒法建立該類的實例。例如:編程

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

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

聲明空構造函數可阻止自動生成默認構造函數。注意,若是您不對構造函數使用訪問修飾符,則在默認狀況下它仍爲私有構造函數。可是,一般顯式地使用 private 修飾符來清楚地代表該類不能被實例化。xss

當沒有實例字段或實例方法(如 Math 類)時或者當調用方法以得到類的實例時,私有構造函數可用於阻止建立類的實例。若是類中的全部方法都是靜態的,可考慮使整個類成爲靜態的。有關更多信息,請參見靜態類和靜態類成員(C# 編程指南)ide

下面是使用私有構造函數的類的示例。函數

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

注意,若是您取消註釋該示例中的如下語句,它將生成一個錯誤,由於該構造函數受其保護級別的限制而不可訪問:ui

C#
 
// Counter aCounter = new Counter();   // Error
相關文章
相關標籤/搜索