ホームページ > バックエンド開発 > C#.Net チュートリアル > C# のシングルトン クラスが常にシールされるのはなぜですか?

C# のシングルトン クラスが常にシールされるのはなぜですか?

王林
リリース: 2023-08-29 08:21:05
転載
643 人が閲覧しました

为什么 C# 中的单例类总是密封的?

sealed キーワードは、クラスを継承できないことを意味します。コンストラクターをプライベートとして宣言すると、クラスのインスタンスを作成できなくなります。

プライベート コンストラクターを持つ基本クラスを持つことができますが、その基本クラスから継承し、いくつかのパブリック コンストラクターを定義し、基本クラスを効果的にインスタンス化できます。

コンストラクターは継承されません (したがって、派生コンストラクターは継承されません)。基底クラスにすべてのプライベート コンストラクターがあるためだけではありません)、派生クラスは常に最初に基底クラスのコンストラクターを呼び出します。

クラスをシール済みとしてマークすると、誰かがクラスを継承できなくなるため、慎重に構築されたシングルトン クラスを回避することができなくなります。

static class Program {
   static void Main(string[] args){
      Singleton fromStudent = Singleton.GetInstance;
      fromStudent.PrintDetails("From Student");

      Singleton fromEmployee = Singleton.GetInstance;
      fromEmployee.PrintDetails("From Employee");

      Console.WriteLine("-------------------------------------");

      Singleton.DerivedSingleton derivedObj = new Singleton.DerivedSingleton();
      derivedObj.PrintDetails("From Derived");
      Console.ReadLine();
   }
}
public class Singleton {
   private static int counter = 0;
   private static object obj = new object();

   private Singleton() {
      counter++;
      Console.WriteLine("Counter Value " + counter.ToString());
   }
   private static Singleton instance = null;

   public static Singleton GetInstance{
      get {
         if (instance == null)
            instance = new Singleton();
         return instance;
      }
   }

   public void PrintDetails(string message){
      Console.WriteLine(message);
   }

   public class DerivedSingleton : Singleton {
   }
}
ログイン後にコピー

以上がC# のシングルトン クラスが常にシールされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート