马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

C#单例模式代码(含三种方法)

[复制链接]
查看3011 | 回复3 | 2016-6-3 09:21:10 | 显示全部楼层 |阅读模式
【转载】
第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我……

[C#] 纯文本查看 复制代码
public class Singleton
{
    private static Singleton _instance = null;
    private Singleton(){}
    public static Singleton CreateInstance()
    {
        if(_instance == null)
 
        {
            _instance = new Singleton();
        }
        return _instance;
    }
}




第二种考虑了线程安全,不过有点烦,但绝对是正规写法,经典的一叉



[C#] 纯文本查看 复制代码
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#这样的高级语言特有的,实在懒得出奇

[C#] 纯文本查看 复制代码
public class Singleton
{
 
    private Singleton(){}
    public static readonly Singleton instance = new Singleton();
}  



C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
ibcadmin | 2016-6-3 09:21:28 | 显示全部楼层
看完不回复是可耻行为
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
剑弑 | 2016-6-3 09:26:14 | 显示全部楼层
楠哥,前面两个都知道,但最后哪个是什么原理勒
ibcadmin | 2016-6-3 14:04:10 | 显示全部楼层
剑弑 发表于 2016-6-3 09:26
楠哥,前面两个都知道,但最后哪个是什么原理勒

修饰符  readonly    只读,  就不能再实例化了
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则