單例建構函式模式

public class SingletonClass
{
    public static SingletonClass Instance { get; } = new SingletonClass();

    private SingletonClass()
    {
        // Put custom constructor code here
    }    
}

因為建構函式是私有的,所以不能通過使用程式碼來建立 SingletonClass 的新例項。訪問 SingletonClass 的單個例項的唯一方法是使用靜態屬性 SingletonClass.Instance

Instance 屬性由 C#編譯器生成的靜態建構函式指定。 .NET 執行時保證靜態建構函式最多執行一次,並在首次讀取 Instance 之前執行。因此,所有同步和初始化問題都由執行時執行。

請注意,如果靜態建構函式失敗,則 Singleton 類在 AppDomain 的生命週期中將永久不可用。

此外,靜態建構函式不保證在第一次訪問 Instance 時執行。相反,它會在此之前的某個時刻執行。這使得初始化發生的時間不確定。在實際情況中,JIT 經常在引用 Instance 的方法的編譯 (而不是執行) 期間呼叫靜態建構函式。這是效能優化。

有關實現單例模式的其他方法,請參閱 Singleton 實現頁面。