3

MSDN で、シングルトン クラスを作成する 2 つの方法を見つけました。

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

確かに、静的コンストラクターを使用できますか。あなたが示した2番目の例を使用するだけでなく、なぜそれを使用したいのかわかりませんが、確かに可能です. 機能的には 2 番目の例と同じですが、そこに到達するにはより多くの入力が必要です。

プロパティが複数のスレッドからアクセスされる場合、最初の例は安全に使用できませんが、2 番目の例は安全です。最初の例ではlock、複数のインスタンスが作成される可能性を防ぐために、または他の同期メカニズムを使用する必要があります。

于 2014-11-07T15:53:11.363 に答える