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

如您所见,我无法A通过base在 C 中使用来访问成员。我怎样才能访问它?谢谢 :)

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 回答