Maison > développement back-end > Tutoriel C#.Net > Pourquoi les classes singleton en C# sont-elles toujours scellées ?

Pourquoi les classes singleton en C# sont-elles toujours scellées ?

王林
Libérer: 2023-08-29 08:21:05
avant
644 Les gens l'ont consulté

Le mot-clé

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

sealed signifie que la classe ne peut pas être héritée. Déclarer le constructeur comme privé signifie qu'aucune instance de la classe ne peut être créée.

Vous pouvez avoir une classe de base avec un constructeur privé tout en héritant de cette classe de base, définir des constructeurs publics et instancier efficacement la classe de base.

Les constructeurs ne sont pas hérités (les classes dérivées ne le sont donc pas simplement parce que la classe de base. a tous les constructeurs privés) et la classe dérivée appelle toujours le constructeur de la classe de base en premier.

Marquer une classe comme scellée empêche quelqu'un de travailler autour de votre classe singleton soigneusement construite, car cela empêche quelqu'un d'hériter de la classe.

Exemple

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 {
   }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal