为什么我不能从 C# 中的子类访问受保护的方法?
Why can't I access a protected method from a subclass in C#?
为什么我不能从 C# 中的子类访问受保护的方法?
Class:
public abstract class A
{
protected void Method()
{
}
}
子类:
public class B : A
{
}
控制台应用程序:
B b = new B();
b.Method();
编译器说:
错误 1 'Method()' 由于其保护级别
而无法访问
protected
不是 意味着客户端代码可以通过派生的 class 实例访问它。
它确实意味着派生的class代码可以使用它。例如,this 将是有效的:
public class B : A
{
public void SomeMethod()
{
Method();
}
}
如果您希望您的精确代码示例正常工作,请将Method
标记为public
。
为什么我不能从 C# 中的子类访问受保护的方法?
Class:
public abstract class A
{
protected void Method()
{
}
}
子类:
public class B : A
{
}
控制台应用程序:
B b = new B();
b.Method();
编译器说: 错误 1 'Method()' 由于其保护级别
而无法访问protected
不是 意味着客户端代码可以通过派生的 class 实例访问它。
它确实意味着派生的class代码可以使用它。例如,this 将是有效的:
public class B : A
{
public void SomeMethod()
{
Method();
}
}
如果您希望您的精确代码示例正常工作,请将Method
标记为public
。