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

これが、保護された修飾子の実装方法です。クラス自体または派生クラスからアクセスできますが、オブジェクトのインスタンスがある場合はアクセスできません。クラスのインスタンスを指定してアクセスできるようにする場合は、公開する必要があります。もう1つの可能性は、現在のアセンブリ内のすべてのタイプと他のアセンブリ内のタイプに適用protected internalされることを意味するようにすることです。publicprotected

于 2011-07-17T08:31:17.503 に答える