Singleton设计模式中的静态构造函数

时间:2014-11-07 15:50:26

标签: c# design-patterns singleton static-constructor

在MSDN上,我发现了两种创建单例类的方法:

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

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

我的问题是:我们可以使用一个静态构造函数,在第一次使用之前为我们创建这个对象吗?

1 个答案:

答案 0 :(得分:4)

肯定能使用静态构造函数吗?我不知道为什么你只想使用你已经展示的第二个例子来使用它,但你当然可以。它在功能上与你的第二个例子完全相同,但只需要更多的输入即可到达那里。

请注意,如果从多个线程访问属性,则无法安全地使用您的第一个示例,而第二个示例是安全的。您的第一个示例需要使用lock或其他同步机制来防止创建多个实例的可能性。