兼顾线程安全常用以下三种写法:
public sealed class Singleton { private static readonly Singleton instance = new Singleton(); // 显式静态构造器告诉C#编译器 // 不要将类型标记为BeforeFieldInit
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Singleton() { } private Singleton() { } public static Singleton Instance { get { return instance; } } }
public sealed class Singleton { private static readonly Lazy<Singleton> lazy = new Lazy<Singleton>(() => new Singleton()); public static Singleton Instance { get { return lazy.Value; } } private Singleton() { } }
public sealed class Singleton { private static Singleton instance = null; private static readonly object padlock = new object(); Singleton() { } public static Singleton Instance { get { lock (padlock) { if (instance == null) { instance = new Singleton(); } return instance; } } } }
Implementing the Singleton Pattern in C# (csharpindepth.com)
以上来自C# in Depth 作者的博客资源
标签:Singleton,C#,private,instance,static,单例,public From: https://www.cnblogs.com/thingk/p/17342628.html