Bonjour,

soit la liste d'animaux suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
List<Animal> animaux = new List<Animal>();
                    Animal chien_1 = new Chien();
 
                    Animal chat_1 = new Chat();
 
                    Animal animal_1 = new Animal();
 
                    Chien chien_2 = new Chien();
Soit la classe Chien avec sa méthode Aboyer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
class Chien : Animal
    {
        public Chien(): base() { }
 
        public Chien(string prenomDuChien):base(prenomDuChien)
    {
 
    }//fin de constructeur*/
 
     public void Aboyer()
     {
         Console.WriteLine("Wouaf !");
     }//fin de méthode Aboyer*/
    }//fin de classe
Si j'écris ce code pour faire aboyer les chiens

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 
foreach (Animal a in animaux)
          {   
               if (a is Chien)
          {
              ((Chien)a).Aboyer();
           }//fin de if 
}//fin de foreach
Est que le cast en Chien s'executera aussi pour l'instance chien_2 alors qu'il n'est pas nécessaire, ou est ce que ce dernier cast ne sera pas réalisé car chien_2 est déjà un Chien qui peut Aboyer?


Merci beaucoup de votre réponse

Bien cordialement.

new_wave