为什么尽管有私有构造函数,它在 MSDN 的 class 中使用 SEALED
Why in spite of having private constructor, it uses SEALED in the class in MSDN
我正在学习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;
}
}
}
我指的网站是这样的:
因为如果您使用嵌套 class,您可以从父级 class 继承并提供这样的 public 构造函数...
public class Parent
{
private Parent(){}
public class Child : Parent
{
public Child() {}
}
}
现在你可以这样做了...
var child = new Parent.Child();
这打破了单例模式。添加 sealed
修饰符可以防止这种情况。
我正在学习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;
}
}
}
我指的网站是这样的:
因为如果您使用嵌套 class,您可以从父级 class 继承并提供这样的 public 构造函数...
public class Parent
{
private Parent(){}
public class Child : Parent
{
public Child() {}
}
}
现在你可以这样做了...
var child = new Parent.Child();
这打破了单例模式。添加 sealed
修饰符可以防止这种情况。