我正在学习Singleton以加深我对此的了解。
我遇到MSDN,它使用SEALED并声称我们无法进一步派生,因此当我们的目标是单身时,无法创建一个实例。我同意。
但是,我看到已经有一个私有构造函数来阻止派生,就像我在VS中尝试它一样,它说由于保护级别而无法访问,这是公平的。所以我觉得这本身就解决了不允许推导的目的。密封为什么?为什么特别是在文档中,他们写道,当他们没有为私人构造函数说出任何关于此目的的事情时,Sealed用于实现这一目标?
我很好奇,因为我在学习曲线。请帮忙。
这是MSDN文章的内容:
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
private Singleton(){}
public static Singleton Instance
{
get
{
return instance;
}
}
}
我所指的网站是:
答案 0 :(得分:4)
因为如果您使用嵌套类,您可以从父类继承并提供像这样的公共构造函数...
public class Parent
{
private Parent(){}
public class Child : Parent
{
public Child() {}
}
}
现在你可以这样做......
var child = new Parent.Child();
打破了Singleton模式。添加sealed
修饰符会阻止此操作。