1

下面是一个简单的测试代码:

public class A
{
    protected int m = 0;
}

internal class B: A
{
    public void test(A objA, B objB)
    {
        base.m++; //OK!
        objA.m++; //cannot access protected member

        m++;      //OK!
        objB.m++; //OK!
    }
}

请问,为什么在方法B.testA()中,可以访问base.m(这里base是A类),但是不能访问objA.m?

4

1 回答 1

5

这就是受保护修饰符的实现方式。您可以从类本身或派生类访问它,但如果您有对象的实例,则无法访问它。如果您希望在给定类的实例的情况下可以访问它,则必须将其公开。另一种可能性是使其protected internal意味着它将public适用于当前程序集中的所有类型以及protected其他程序集中的类型。

于 2011-07-17T08:31:17.503 回答