.NET 文档中关于继承的混淆

E. *_*son 2 .net c# inheritance msdn class

我正在阅读 .NET 文档,并遇到了该类IdentityReference,其中指出:

表示身份,并且是 NTAccount 和 SecurityIdentifier 类的基类。该类不提供公共构造函数,因此不能被继承。

NTAccount我的困惑是,它说它不能被继承,但它还声明它是和类的基类SecurityIdentifier。根据我的理解,这些类都是继承的IdentityReference

是文档不正确,还是我的理解不完整?文档是否应该说“此类不提供公共构造函数,因此无法实例化”?

Pan*_*vos 5

文档是正确的。子类必须能够调用基类构造函数,无论是默认的无参数构造函数还是其他构造函数。但该类IdentityReference没有公共或受保护的构造函数。如果您尝试继承它,您将收到编译错误。

该类有一个内部构造函数,它允许其自己的程序集中的类从它继承

public abstract class IdentityReference
{
    internal IdentityReference()
    {
        // exists to prevent creation user-derived classes (for now)
    }
Run Code Online (Sandbox Code Playgroud)

NTAccount是在同一程序集中定义的,因此它可以继承自IdentityReference

public sealed class NTAccount : IdentityReference
{
...
Run Code Online (Sandbox Code Playgroud)

该类sealed虽然如此,但其他程序集也不能从它继承