为什么尽管有私有构造函数,它在MSDN中的类中使用SEALED

时间:2015-03-20 04:07:04

标签: c# asp.net .net singleton

我正在学习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; 
      }
   }
}

我所指的网站是:

https://msdn.microsoft.com/en-us/library/ff650316.aspx

1 个答案:

答案 0 :(得分:4)

因为如果您使用嵌套类,您可以从父类继承并提供像这样的公共构造函数...

public class Parent 
{
    private Parent(){}

    public class Child : Parent
    {
        public Child() {}
    }
}

现在你可以这样做......

var child = new Parent.Child();

打破了Singleton模式。添加sealed修饰符会阻止此操作。