Pergunta

Aqui está o meu layout atual: (a questão é o comentário)

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

Como você pode ver, eu não posso acessar membros A usando base em C. Como eu poderia acessá-lo? Thanks:)

Foi útil?

Solução

Se você fizer foo protegido,

class A
{  
    protected int foo;  
}

, em seguida, uma base simples irá fazer:

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

Mas seria melhor construir uma propriedade (protegida) em torno foo:

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

Outras dicas

O campo em um é declarado privado. Deve ser protegido por classes derivadas para acessá-lo.

pública colocar na frente de 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
    }
}

Por padrão, a menos que você especifique o contrário todos os membros são privados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top