Bonjour,
Imaginons que j'ai une classe Mere, ainsi qu'une classe Fille qui herite de Mere.
Maintenant j'ai une collection de Mere, qui contient des Mere et des Fille.
Et je voudrais effectuer un traitement sur chaque element de cette collection mais seulement sur les objets de type Fille.
Un exemple concret: j'ai une classe MyControlType qui herite de Control.
Ma Form possede une collection de Control, dans lequel j'insere des MyControlType, mais qui possede egalement des controles "normaux" (boutons etc.). Et je voudrais faire une boucle sur Controls, de facon a appeler une fonction DoSomething() de MyControlType. Pour l'instant, j'ai le code suivant:
Ca marche, mais le compilateur me lance un "performance warning". Car effectivement, il y a des casts dans tous les sens dans cette boucle. J'imagine par exemple que le is effectue un "cast cache".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 foreach (Control c in Controls) if (c is MyControlType) ((MyControlType)c).DoSomething();
Comment faire, donc, pour faire cela proprement?
Partager