为什么我不能从C#中的子类访问受保护的方法?

The*_*Cog 4 c# inheritance

为什么我不能从C#中的子类访问受保护的方法?

类:

public abstract class A
{
    protected void Method()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

子类:

public class B : A
{

}
Run Code Online (Sandbox Code Playgroud)

控制台应用:

B b = new B();

b.Method();
Run Code Online (Sandbox Code Playgroud)

编译器说:错误1'方法()'由于其保护级别而无法访问

Bra*_*NET 17

protected意味着客户端代码可以通过一个派生类实例访问.

确实意味着派生类代码可以使用它.例如,将是有效的:

public class B : A
{
     public void SomeMethod()
     {
          Method();
     }
}
Run Code Online (Sandbox Code Playgroud)

如果您希望确切的代码示例正常工作,请标记Methodpublic.