C'est exactement la meme chose. Tu ne peux pas caster un List<truc> en List<bidule> car ca obligerai a caster chacun des elements, mais une fois que tu as trouve un element, tu peux le caster de truc en bidule, et l'heritage ne change rien a ca...
C'est exactement la meme chose. Tu ne peux pas caster un List<truc> en List<bidule> car ca obligerai a caster chacun des elements, mais une fois que tu as trouve un element, tu peux le caster de truc en bidule, et l'heritage ne change rien a ca...
on est bien d'accord. L'interet de la liste générique est quand même de s'assurer du typage de la collection et de ne pas avoir à caster. Donc en réponse à neptune je me demandai si on pouvait faire quelquechose qd même avec une list<T> plutot qu'une arraylist dans ce cas.
Dans quelques temps, tu pourras officiellement faire un :
avec les méthodes d'extension de .NET 3.5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 List<object> list = ...; List<int> listInt = list.OfType<int>();
Attention OfType() ne revoie pas une List mais un IEnumerable, donc ici ca ne marchera pas. =)
Puis au pire en 2.0 tu peux deja faire un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 List<object> list = new List<object>(); List<int> list1 = list.ConvertAll<int>(delegate(object o) { return (int)o; });
Yep effectivement intéressant une méthode du type :
permet de récupérer des collections de fils. Pas mal. Bcp de plomberie qd même et on voit qd même poindre les problèmes de covariance ect...auxquels d'ailleurs faudrait que je m'intéresse un peu plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public List<T> GetListGenerique<T>() where T : Parent { return this.m_oListe.ConvertAll<T>( delegate( Parent o ) { return (T)o; } ); }
Néanmoins l'affectation à la liste reste problématique car autant l'on peut faire
mais l'affectation ci-dessous est refusé car List<T> est invariant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Child[] oArrayChild = new Child[1]; Parent[] oArrayParent = oArrayChild;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 List<Child> oListeChild = new List<Child>(); List<Parent> oListeParent = oListeChild;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager