質問

ここに私の現在のレイアウトである:(質問はコメントです)。

class A
{  
    int foo;  
}

class B : A {}

class C : B
{
    void bar()
    {
        //I want to access foo
        base.foo; // Doesn't work
        base.base.foo // Doesn't work, of course
    }
}
あなたが見ることができるように

、私はそれにアクセスできる方法C.でAを使用してbaseのメンバーにアクセスすることはできませんか?ありがとう:)

役に立ちましたか?

解決

あなたはfooが保護させる場合は、

class A
{  
    protected int foo;  
}

単純なベースが行います。

  void bar()
  {
        //I want to access foo
        base.foo; // will work now
        // base.base.foo // Doesn't work, of course
  }

しかし、fooの周り(保護)プロパティを構築する方が良いでしょう。

   class A
   {  
        private int _foo;  
        protected int Foo 
        {
           get { return _foo; }
           set { _foo = value; }
        }
   }

他のヒント

Aでのフィールドはプライベート宣言されています。それはそれにアクセスするための派生クラスのために保護する必要があります。

のint fooの前に公共入れ;

class A
{  
    public int foo;  
}

class B : A {}

class C : B
{
    void bar()
    {
        //I want to access foo
        base.foo; // Now you can see it
    }
}

あなたはすべてのメンバーがプライベートですが、特に指定しない限り、デフォルトでます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top