【问题标题】:C#: access right due to inheritanceC#:由于继承而获得的访问权
【发布时间】:2011-07-17 16:31:17
【问题描述】:

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

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?

【问题讨论】:

    标签: c# inheritance access-rights


    【解决方案1】:

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

    【讨论】:

    • 谢谢达林。现在我明白了:)
    猜你喜欢
    • 2011-12-22
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多