Heim > Artikel > Backend-Entwicklung > Warum sind Singleton-Klassen in C# immer versiegelt?
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.
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 { } }
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!