Tag: protected

为什么我不能在子类中访问受保护的变量?

我有一个带有受保护变量的抽象类 abstract class Beverage { protected string description; } 我无法从子类访问它。 Intellisense不会显示它可访问。 为什么会这样? class Espresso:Beverage { //this.description ?? }

C#访问派生类中的受保护成员

我写了以下代码: public class A { protected string Howdy = “Howdy!”; } public class B : A { public void CallHowdy() { A a = new A(); Console.WriteLine(a.Howdy); } } 现在,在VS2010它会导致以下编译错误: 无法通过类型“A”的限定符访问受保护的成员“Aa”; 限定符必须是’B’类型(或从中派生)。 这对我来说似乎非常不合逻辑 – 为什么我不能从类的方法访问类实例的protected字段,该方法是从它派生的? 那么, 为什么会这样呢? 找到了严格的答案 – http://blogs.msdn.com/b/ericlippert/archive/2005/11/09/491031.aspx

通过base / sibling类阻止受保护成员访问的真正原因是什么?

我最近发现派生类中的方法只能通过派生类(或其子类之一)的实例访问基类的受保护实例成员: class Base { protected virtual void Member() { } } class MyDerived : Base { // error CS1540 void Test(Base b) { b.Member(); } // error CS1540 void Test(YourDerived yd) { yd.Member(); } // OK void Test(MyDerived md) { md.Member(); } // OK void Test(MySuperDerived msd) { msd.Member(); } } class MySuperDerived : MyDerived […]