Lire dans une collection [Résolu] [C#] - C#/.NET managed - Programmation
Marsh Posté le 22-06-2005 à 21:44:39
enumerator si c'est une hashtable, ou un foreach si c'est une arraylist (par exemple)...
Marsh Posté le 22-06-2005 à 22:26:48
ToxicAvenger a écrit : enumerator si c'est une hashtable, ou un foreach si c'est une arraylist (par exemple)... |
t'as pas du tout comprendre toi ...
Code :
|
Marsh Posté le 23-06-2005 à 09:24:25
J'ai déjà essayé this.List[i] mais je ne peux accéder aux attributs de mon objet.
Le coup du IDictionary, j'avoue ne pas comprendre mais je vais essayer de trouver des liens qui en parlent ?
Ca m'étonne quand meme qu'il n'y ai pas de solutions plus simples ...
Je suis prenneur d'autres conseils
Merci
Marsh Posté le 23-06-2005 à 09:25:38
Quand tu récupère quelque chose dans une list (genre via List[i] ou autre chose), t'obtient un Object. A toi de le caster dans le type que tu veux, et ainsi accéder aux attributs/propriétés/méthodes définies pour ce type
Marsh Posté le 23-06-2005 à 09:41:30
Merci beaucoup ... j'ai trouvé.
Alors le truc c'est que je faisais en fait des collections de collections (je rajoutais un élément de ma classe collec dans la collec).
J'ai donc crée une classe interne.
Et puis ensuite avec le cast ca a marché niquel.
Encore merci
Marsh Posté le 23-06-2005 à 09:42:16
j'imagine même pas le massacre ... cast donc jusqu'à que ça marche plus.
Marsh Posté le 23-06-2005 à 11:01:21
Worldofdada a écrit : Merci beaucoup ... j'ai trouvé. |
bordel, mais foreach enfin
Marsh Posté le 23-06-2005 à 11:01:48
ToxicAvenger a écrit : enumerator si c'est une hashtable, ou un foreach si c'est une arraylist (par exemple)... |
Marsh Posté le 23-06-2005 à 11:02:34
ToxicAvenger a écrit : enumerator si c'est une hashtable, ou un foreach si c'est une arraylist (par exemple)... |
ForEach repose sur un enumerator
Marsh Posté le 23-06-2005 à 12:57:09
vous mélangez tout !!
- premièrement, y'a pas d'Enumerator en .NET, mais une interface IEnumerator
- pour que foreach puisse parcourir une collection, ladite collection doit implémenter l'interface IEnumerable, dont l'unique méthode, GetEnumerator() retourne un IEnumerator exposant des méthodes permettant de parcourir la collection.
HashTable implémentant IEnumerable, elle est donc "parcourable" par foreach.
donc pour répondre à la question initiale de Wordofdada, s'il veut parcourir sa collection avec foreach (certainement ce qu'il y a de plus simple), à lui d'implémenter IEnumerable, et donc de créer une classe IEnumerator rattachée à sa collection
Marsh Posté le 23-06-2005 à 13:12:39
de plus, Taz, je vois vraiment pas ce que vient faire IDictionary dans ton code. HashTable implémentant IEnumerable, quel besoin as tu de passer par IDictionary ?
Marsh Posté le 23-06-2005 à 13:14:41
bah je sais. Seulement autant écrire du code générique. IDictionary ou Hashtable, ça change rien du tout ... Hashtable implémente IDictionary
Et puis d'ailleurs ça aide à comprendre le nommage.
Marsh Posté le 23-06-2005 à 14:00:27
Harkonnen a écrit : vous mélangez tout !! |
C'est ce que j'ai dit... Sauf que j'ai utilisé le terme générique "enumerator"... Tout comme j'utilise ma voiture, et non mon interface IVoiture
Faut faire gaffe ici, dès que tu précises pas assez tu te fais reprendre direct
Marsh Posté le 23-06-2005 à 14:02:04
FlorentG a écrit : C'est ce que j'ai dit... Sauf que j'ai utilisé le terme générique "enumerator"... Tout comme j'utilise ma voiture, et non mon interface IVoiture |
de toute façon, tu es trop jeune pour avoir le permis d'IConduire
Marsh Posté le 23-06-2005 à 14:06:11
Harkonnen a écrit : de toute façon, tu es trop jeune pour avoir le permis d'IConduire |
Tu veux dire le permis de conduire, qui implémente IPermis ?
Marsh Posté le 25-06-2005 à 00:33:33
Harkonnen a écrit : - pour que foreach puisse parcourir une collection, ladite collection doit implémenter l'interface IEnumerable, dont l'unique méthode, GetEnumerator() retourne un IEnumerator exposant des méthodes permettant de parcourir la collection. |
En réalité il suffit que le type déclare une méthode GetEnumerator(), et que celle-ci renvoie un type déclarant une méthode MoveNext() et Current().
Reste que je ne vois pas vraiment d'intérêt à faire comme ça.
Marsh Posté le 25-06-2005 à 00:41:48
Harkonnen > tu peux me dire ce qu'on a fait pour mériter ça ?
Marsh Posté le 25-06-2005 à 00:52:00
Taz a écrit : Harkonnen > tu peux me dire ce qu'on a fait pour mériter ça ? |
Ben teste.
Marsh Posté le 25-06-2005 à 00:58:46
Taz a écrit : et tu te rends compte à quel point c'est un bug grave ? |
Ca vient de la MSDN (doc de foreach).
J'ai conscience que c'est moche et a priori très inutile, mais c'est possible et prévu par le langage.
Marsh Posté le 25-06-2005 à 01:04:59
C'EST DE LA MERDE. Si tu regardes bien C#, y a la moitié des gens qui ont travaillé dessus qui ont rien compris. Y a tout dans C# pour faire du versioning de méthode propre et clair. Et y a des cons pour faire n'importe quoi. Des cons, je vois pas d'autres termes. C'est un véritable tackle à la gorge parce que ça demande plus de travail d'implémentation en plus.
Code :
|
avec ce genre de connerie de merde ça m'étonnerait pas que ça donne pas le même résultat en fonction du compilateur.
Marsh Posté le 25-06-2005 à 01:08:50
plus j'y pense plus je me dis que c'est un échec le boulot supplémentaire qu'il faut. C'est minable. Y a pas que ça de pourri en C# remarque. Et bien sur quand on est con c'est pour la vie, pas question de défaire ses bêtises d'assumer.
Vive python
Marsh Posté le 25-06-2005 à 01:12:29
On est d'accord que c'est de la merde...
C'était purement à titre indicatif.
Marsh Posté le 27-06-2005 à 11:01:49
Bon finalement, j'ai tout viré pour passer avec les HashTables.
C'est beaucoup plus simple, et a mon avis beaucoup plus intelligent.
Merci
Marsh Posté le 22-06-2005 à 15:33:44
Bonjour,
Désolé de vous déranger mais c'est vraiment pour une question bete et qui m'agace.
J'ai crée une collection d'objets que j'ai rempli avec la méthode Add de l'attribut List (this.List.Add(...)).
Je n'ai pas eu le choix d'utiliser ca ... imposé.
Mon problème est que je voudrais lire les éléments de ma collection afin de rechercher un élément particulier (en faisant une recherche sur un attribut).
Or je n'arrive pas a trouver ce que je cherche ni sur MSDN ni sur le net ... je commence meme a me demander si c'est possible.
Vous auriez une petite aide a m'apporter ?
Merci beaucoup,
Worldofdada
Message édité par Worldofdada le 23-06-2005 à 09:41:48