访问第二个父母的成员(继承)

时间:2009-08-11 20:53:30

标签: c# class inheritance double

这是我目前的布局:(问题是评论)

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的成员。我怎样才能访问它?谢谢:))

3 个答案:

答案 0 :(得分: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; }
        }
   }

答案 1 :(得分:3)

A中的字段被声明为私有。应该保护派生类访问它。

答案 2 :(得分:2)

将公开放在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
    }
}

默认情况下,除非您另行指定,否则所有成员都是私有的。