3

在 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; }
   }
}

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

4

1 回答 1

4

你可以使用静态构造函数,当然。我不知道您为什么要使用它而不是仅使用您展示的第二个示例,但您当然可以。它在功能上与您的第二个示例相同,但需要更多输入才能到达那里。

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

于 2014-11-07T15:53:11.363 回答