Question

Voici ma configuration actuelle: (la question est le commentaire)

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

Comme vous pouvez le voir, je ne peux pas accéder aux membres de A en utilisant base en C. Comment pourrais-je accéder? Merci:)

Était-ce utile?

La solution

Si vous faites foo protégé,

class A
{  
    protected int foo;  
}

alors une base simple fera:

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

Mais il serait préférable de construire une propriété (protégée) autour foo:

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

Autres conseils

Le champ A est déclarée privée. Elle doit être protégée pour les classes dérivées pour y accéder.

Mettre public devant 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
    }
}

Par défaut, sauf indication contraire tous les membres sont privées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top