C#单例模式的三种写法
2016-02-26 13:46
656 查看
http://shansun123.iteye.com/blog/669942
第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我……
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!
第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我……
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!
相关文章推荐
- 由StreamWriter.WriteLine 引发对C#多线程的深入思考(一)
- c#版三层登录
- C#学习笔记:foreach原理
- C#关键字:yield
- C# 值类型与引用类型 (上)
- C# .Net动态调用webService
- C#中方法、类等的默认访问修饰符~
- C#基础之结构体&枚举&数组
- C# 生成二维码并且在中间加Logo
- c#日期计算
- C#简单实现防止多个程序运行的方法
- C#双缓冲技术实例详解
- C#精髓 第四讲 GridView 72般绝技
- C#双缓冲实现方法(可防止闪屏)
- C#实现图片加相框的方法
- C# XML读写实例
- C# Enum,Int,String之间的转换
- C# 单链表
- 自定义信息框 C# Wpf
- 设置窗体透明C#代码