Fjohn666
Messages postés6Date d'inscriptionsamedi 24 juillet 2004StatutMembreDernière intervention 2 novembre 2008
-
30 oct. 2008 à 19:02
Fjohn666
Messages postés6Date d'inscriptionsamedi 24 juillet 2004StatutMembreDernière intervention 2 novembre 2008
-
2 nov. 2008 à 20:47
Bonjour a tous,
j'ai un problème,peut etre de logique, de cast :
je voudrais faire une list<T> améliorée avec des fonctions maison :
Voici donc ce que je fais :
public class BaseList<T> : List<T>
{
public string MafunctionPerso()
{
return "blablablablabla";
}
}
Dans mon programme principal je dois, arrivé un moment, utiliser la methode FindAll() . Je fais donc ca :
BaseList b = new BaseList();
b.Add(69);
b.Add(70);
b.Add(71);
b.Add(72);
BaseList b2 = new BaseList(); // inutile dans l'exemple mais pour simplifier j'ai besoin de stocker la valeur dans cette variable
b2 = (BaseList)b.FindAll(delegate(int a) { return a > 70; });
C'est sur la derniere ligne que j'ai une erreur. En effet la methode FindAll de List<T> retourne un type List<T>. Comme ma BaseList<T> herite de List<T> je pensais que je pourrais caster un List<T> en BaseList<T> (après tout toutes les methodes et attribus de List<T> se trouve dans BaseList<T> ...) mais il semblerait que ce ne soit pas possible de cette façon. Je vous retourne l'erreur :
Impossible d'effectuer un cast d'un objet de type 'System.Collections.Generic.List`1[System.Int32]' en type 'BaseList`1[System.Int32]'.
Pouvez vous m'expliquer pourquoi ? Est ce une erreur de logique ? ou une particularité du langage ?