靜態初始化單例

public class Singleton
{
    private readonly static Singleton instance = new Singleton();
    private Singleton() { }
    public static Singleton Instance => instance;
}

此實現是執行緒安全的,因為在這種情況下,instance 物件在靜態建構函式中初始化。CLR 已經確保所有靜態建構函式都是執行緒安全的。

變換 instance 不是執行緒安全的操作,因此 readonly 屬性保證初始化後的不變性。