문제

다음은 내 현재 레이아웃입니다. (질문은 주석입니다)

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.에서 어떻게 액세스 할 수 있습니까? 감사 :)

도움이 되었습니까?

해결책

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