C#单例模式的三种写法

    技术2022-05-19  28

     

     

    第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我……

    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!


    最新回复(0)