public class MyClass
{
private MyClass() { }
//保证线程安全的延时加载单例
public static MyClass Instance
{
get { return Nested._Instance; }
}
private class Nested
{
static Nested() { }
internal static readonly MyClass _Instance = new MyClass();
}
}
线程安全是针对多个线程同时运行来说的,这段代码中是用静态变量来实现的,当程序加载时就只有一个实例存在于内存中
标记一下。。。
这个用法主要是凸显延迟加载,只有当第一次调用Instance时才会实例化内联类里的单件,而且用的都是静态方法调用,多线程时也不会存在多次实例化的可能。STATIC实现单例是C#有特色的地方,由于内存中只会有一份实例,多个线程同时访问得到的是同一个_Instance实例。这种内联+静态的单例方法我还没用过喃,互相学习了