Heim > Backend-Entwicklung > C#.Net-Tutorial > Warum sind Singleton-Klassen in C# immer versiegelt?

Warum sind Singleton-Klassen in C# immer versiegelt?

王林
Freigeben: 2023-08-29 08:21:05
nach vorne
693 Leute haben es durchsucht

Das Schlüsselwort „sealed“ bedeutet, dass die Klasse nicht vererbt werden kann. Die Deklaration des Konstruktors als privat bedeutet, dass keine Instanz der Klasse erstellt werden kann.

为什么 C# 中的单例类总是密封的?Sie können eine Basisklasse mit einem privaten Konstruktor haben und dennoch von dieser Basisklasse erben, einige öffentliche Konstruktoren definieren und die Basisklasse effektiv instanziieren hat alle privaten Konstruktoren) und die abgeleitete Klasse ruft immer zuerst den Basisklassenkonstruktor auf.

Das Markieren einer Klasse als versiegelt verhindert, dass jemand Ihre sorgfältig erstellte Singleton-Klasse umgehen kann, da dadurch verhindert wird, dass jemand von der Klasse erbt.

Beispiel

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 {
   }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum sind Singleton-Klassen in C# immer versiegelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage