为什么单例类总是用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#密封? 的全部内容, 来源链接: utcz.com/z/316102.html