Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa kelas tunggal dalam C# sentiasa dimeterai?

Mengapa kelas tunggal dalam C# sentiasa dimeterai?

王林
王林ke hadapan
2023-08-29 08:21:05634semak imbas

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

kata kunci yang dimeterai bermaksud kelas itu tidak boleh diwarisi. Mengisytiharkan pembina sebagai peribadi bermakna tiada contoh kelas boleh dibuat.

Anda boleh mempunyai kelas asas dengan pembina persendirian tetapi masih mewarisi daripada kelas asas itu, tentukan beberapa pembina awam dan nyatakan kelas asas itu dengan berkesan.

#🎜 🎜# Pembina tidak diwarisi (jadi kelas terbitan tidak akan berbuat demikian hanya kerana kelas asas mempunyai semua pembina persendirian), dan kelas terbitan sentiasa memanggil pembina kelas asas terlebih dahulu.

Menanda kelas sebagai dimeterai menghalang seseorang daripada bermain-main dengan kelas tunggal anda yang dibina dengan teliti kerana ia menghalang seseorang daripada mewarisi kelas itu.

Contoh

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

Atas ialah kandungan terperinci Mengapa kelas tunggal dalam C# sentiasa dimeterai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam