hhhh2010

博客园 首页 新随笔 联系 订阅 管理

 

  静态初始化

public sealed class Singleton 
{ 
   private static readonly Singleton instance = new Singleton(); 
   private Singleton(){} 
   public static Singleton Instance 
   { 
      get  
      { 
         return instance;  
      } 
   } 
} 

Double-Check Locking  两次检查锁定
public sealed class Singleton 
{ 
   private static volatile Singleton instance; 
   private static object syncRoot = new Object(); 
   private Singleton() {} 
   public static Singleton Instance 
   { 
      get  
      { 
         if (instance == null)  
         { 
            lock (syncRoot)  
            { 
               if (instance == null)  
                  instance = new Singleton(); 
            } 
         } 
         return instance; 
      } 
   } 
} 
延迟加载
public sealed class Singleton
{
    private static readonly Lazy<Singleton> lazy =
        new Lazy<Singleton>(() => new Singleton());

    public static Singleton Instance { get { return lazy.Value; } }

    private Singleton()
    {
    }
}
延伸阅读:https://msdn.microsoft.com/zh-CN/Library/ms998558.aspx
http://www.cnblogs.com/rush/archive/2011/10/30/2229565.html

posted on 2016-05-20 09:11  hhhh2010  阅读(139)  评论(0编辑  收藏  举报