public class A
{
        protected int x;
        static void F(A a, B b) 
        {
          a.x = 1; // Ok                  b.x = 1; // Ok
        }
}
public class B: A

        static void F(A a, B b)
       {
             a.x = 1; // Error    为什么错了?  
             b.x = 1; // Ok
             x=5;     //反编译成base.x=5
             base.x=5;    // OK
       }
}

解决方案 »

  1.   

    protected 可以通过派生类访问
      

  2.   

    我觉得是不是因为编译器不能识别出A类是B类的父类而只能使用base关键字,还有你的B类的静态方法还有个错,静态方法不能用base关键字,也不能直接使用非静态字段x
      

  3.   

    写错了,嘿嘿。不用static的。主要是想了解protected的工作机制,搞不懂啊。派生类内部到底指的是什么内部