2

これが私の現在のレイアウトです:(質問はコメントです)

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
    }
}

ご覧のとおり、CAで使用baseして のメンバーにアクセスできません。どうすればアクセスできますか? ありがとう :)

4

3 に答える 3

6

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; }
        }
   }
于 2009-08-11T20:54:59.433 に答える
3

A のフィールドは非公開と宣言されています。派生クラスがアクセスできるように保護する必要があります。

于 2009-08-11T20:55:55.607 に答える
2

public を 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
    }
}

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

于 2009-08-11T20:55:35.157 に答える