bonjour a tous
quelqu un pourrait m'éclairer sur la notion de cast dans le contexte suivant :
on a une classe mère (Animal)dont dérivent deux classes filles(Chien,Chat) , on crée une liste du type de la classe mère et on voudrait mettre les objet des deux classes filles dedans et les utiliser en tant qu objet de la classe mère ,ce qui implique une conversion implicite des objet classes filles vers objet classe base ,donc les objets de la liste sont logiquement des type Animal .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 List<Animal> animaux = new List<Animal>(); Chien chien = new Chien(); Chat chat = new Chat(); animaux.Add(chien); animaux.Add(chat); foreach (Animal animal in animaux) { animal.Respirer(); }
-dans la liste on veut pouvoir repérer parmi les objets Animal ceux qui ont anciennement été de la classe Chien(ceux converti a partir de la classe chien) , ce qui peut se faire en utilisant un if dans la liste :
ma question : comment on a pu tester dans le if si l'élément de la liste( qui est forcement un type Animal) est un type Chien ou a anciennement été un type Chien vu que l objet Chien a eté converti implicitement en intégrant la liste animaux ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 foreach (Animal animal in animaux) { if (animal is Chien) { Chien c = (Chien)animal; c.Aboyer(); } }
en d'autre terme qu est ce qui peut indiquer que c était un chien ?
merci (dsl pour le pavé ).
Partager