第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我……
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();} 哦,shit!