单例构造函数模式

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 实现页面。