我写了下面的代码:C#在派生类中访问受保护的成员
public class A
{
protected string Howdy = "Howdy!";
}
public class B : A
{
public void CallHowdy()
{
A a = new A();
Console.WriteLine(a.Howdy);
}
}
现在,VS2010
这将导致以下编译错误:
Cannot access protected member 'A.a' via a qualifier of type 'A'; the qualifier must be of type 'B' (or derived from it).
这似乎不合情理我 - 为什么我不能从类派生的类的方法访问类实例的protected
字段?
那么,为什么会发生这种情况?
发现了一个严格的答案 - http://blogs.msdn.com/b/ericlippert/archive/2005/11/09/491031.aspx
+1对于一个非常清晰的问题。 :) – Almo
你可以做的是创建一个受保护的静态方法,只提供对派生类的访问,如下所示: public class A { protected string Howdy =“Howdy!”; } 公共类B: { 公共无效CallHowdy() { 甲一个新= A(); Console.WriteLine(a。你好); } } –