第一种最简单,但没有考虑线程安全,在多线程时可能会出问题
- public class Singleton
- {
- private static Singleton _instance = null;
- private Singleton(){}
- public static Singleton CreateInstance()
- {
- if(_instance == null)
- {
- _instance = new Singleton();
- }
- return _instance;
- }
- }
复制代码 第二种考虑了线程安全,有点烦,是正规写法
- public class Singleton
- {
- private volatile static Singleton _instance = null;
- private static readonly object lockHelper = new object();
- private Singleton(){}
- public static Singleton CreateInstance()
- {
- if(_instance == null)
- {
- lock(lockHelper)
- {
- if(_instance == null)
- _instance = new Singleton();
- }
- }
- return _instance;
- }
- }
复制代码 第三种可能是C#这样的高级语言特有
- public class Singleton
- {
- private Singleton(){}
- public static readonly Singleton instance = new Singleton();
- }
复制代码
|
|