我寫了下面的代碼: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。你好); } } –