1

asp.net のコレクションにシングルトン ラッパーを使用している場合、それをキャッシュする必要がありますか、それともポスト バック間でデータを保持する必要がありますか?

また、別のユーザーがアプリにログインした場合、アプリは (それ自体の) 別のインスタンスを作成し、したがってシングルトンの別のインスタンスを作成しますか、それとも最初のインスタンスで作成された同じシングルトンにアクセスしますか?

シングルトンの実際の実装は、次のいずれかです: (設計 1:)

using System;

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

または設計 2:

public sealed class Singleton
{
   private static readonly Singleton instance = new Singleton();

   private Singleton(){}

   public static Singleton Instance
   {
      get 
      {
         return instance; 
      }
   }
}
4

2 に答える 2

4

静的変数は、アプリケーションが実行されている限り、アプリケーションが再起動されるまで存在します。ポストバックとユーザー全体に存在します。

この記事では、静的シングルトンを実装する方法を示します: http://msdn.microsoft.com/en-us/library/ff650316.aspx

シングルトンの実装に影響を与える、あなたがやろうとしていることに関する要件は他にありますか?

于 2011-01-07T18:03:32.120 に答える
2

シングルトンは、すべてのリクエストに対してインスタンスが 1 つだけであることを確認するパターンです。static と宣言したため、アプリケーションの存続期間中存在します。また、同じインスタンスが、プロパティを通じてオブジェクトを要求するすべてのユーザーに返されます。

于 2011-01-07T18:29:52.600 に答える