静态初始化单例

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

此实现是线程安全的,因为在这种情况下,instance 对象在静态构造函数中初始化。CLR 已经确保所有静态构造函数都是线程安全的。

变换 instance 不是线程安全的操作,因此 readonly 属性保证初始化后的不变性。