C#中單例模式的三種寫法示例
更新時間:2015年06月17日 09:40:06 投稿:junjie
這篇文章主要介紹了C#中單例模式的三種寫法示例,本文分別給出代碼實例,需要的朋友可以參考下
第一種最簡單,但沒有考慮線程安全,在多線程時可能會出問題,不過俺從沒看過出錯的現(xiàn)象,表鄙視我……
復(fù)制代碼 代碼如下:
public class Singleton
{
private static Singleton _instance = null;
private Singleton(){}
public static Singleton CreateInstance()
{
if(_instance == null)
{
_instance = new Singleton();
}
return _instance;
}
}
第二種考慮了線程安全,不過有點煩,但絕對是正規(guī)寫法,經(jīng)典的一叉
復(fù)制代碼 代碼如下:
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#這樣的高級語言特有的,實在懶得出奇
復(fù)制代碼 代碼如下:
public class Singleton
{
private Singleton(){}
public static readonly Singleton instance = new Singleton();
}
哦,shit!
相關(guān)文章
C#中按引用傳遞與按值傳遞的區(qū)別,以及ref與out關(guān)鍵字的用法詳解
以下是對C#中按引用傳遞與按值傳遞的區(qū)別,以及ref與out關(guān)鍵字的用法進行了詳細的分析介紹,需要的朋友可以過來參考下2013-07-07c#使用簡單工廠模式實現(xiàn)生成html文件的封裝類分享
這篇文章主要介紹了運用了簡單工廠模式實現(xiàn)頁面靜態(tài)化封裝類,思路比較簡單,大家可根據(jù)自己的思路再擴展此類2014-01-01