首頁  >  文章  >  後端開發  >  為什麼 C# 中的單例類別總是密封的?

為什麼 C# 中的單例類別總是密封的?

王林
王林轉載
2023-08-29 08:21:05630瀏覽

为什么 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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除