为什么我因"保护级别"错误而"无法访问"?

Emb*_*rja 2 .net c# constructor access-modifiers

我收到此错误:

由于其保护级别,'CTest.AA()'无法访问.

编译此代码时:

public class A
{
    private A()
    {
    }
}

public class B : A
{
    public void SayHello()
    {
        Console.WriteLine("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁能解释为什么?

Alb*_*nbo 14

因为A的默认构造函数是private,所以请尝试protected A() {}作为构造函数.

B自动调用默认构造函数A,如果无法访问B或者没有默认构造函数(如果有构造函数protected A(string s) {})B则无法正确实例化.

编译器自动生成以下默认构造函数 B

public B() : base()
{
}
Run Code Online (Sandbox Code Playgroud)

哪里base()是默认的构造函数的实际调用A.