为什么尽管有私有构造函数,它在 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; 
      }
   }
}

我指的网站是这样的:

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

因为如果您使用嵌套 class,您可以从父级 class 继承并提供这样的 public 构造函数...

public class Parent 
{
    private Parent(){}

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

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

var child = new Parent.Child();

这打破了单例模式。添加 sealed 修饰符可以防止这种情况。