IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C# VS 2005] Collection et boucle foreach


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Points : 11
    Points
    11
    Par défaut [C# VS 2005] Collection et boucle foreach
    Mon soucis du moment, c'est comment puis-je utiliser une boucle foreach pour effectuer des traitements sur des collections.

    J'ai dans mon application, l'étape suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    List<Class1> bookList = new List<Class1>();
    ...
    for (int i = 0; i < bookList.Count; i++)
    {
       string s = bookList[i].Contents.ToString();
       int baseIndex = Convert.ToInt32(bookList[i].BaseIndex.ToString());
       ...
    }
    ...
    puis ayant ajouté des listes du même type que bookList, je me suis dit que c'était laborieux de faire à chaque fois un copier-coller du même traitement d'autant que je risque d'ajouter encore d'autres listes par la suite. Je me suis donc tourné vers l'idée d'utiliser une boucle foreach comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    ...
    ArrayList myArrayList = new ArrayList();
    myArrayList.Capacity = 3;
    myArrayList.Add(bookList);
    myArrayList.Add(comicsList);
    myArrayList.Add(romansfList);
    for (int index = 0; index < myArrayList.Count; index++)
    {
       for (int i = 0; i < myArrayList[index].Count; i++)
       {
          string s = myArrayList[index][i].Contents.ToString();
          int baseIndex = Convert.ToInt32(myArrayList[i].BaseIndex.ToString());
          ...
    }
    ...
    Mais là ça ne compile plus. ArrayList me semblait convenir puique qu'il gére des type complexe. Quelqu'un aurait-il déjà essayé quelque chose de ce genre et pourrais-t'il m'expliquer la marche à suivre pour gérer mes listes s.v.p. ?

    Merci.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    ArrayList est un type qui, d'après moi, be devrait plus exister en .NET 2

    Pkoi ? Tout simplement parce que l'on y stocke des objets, et que pour travailler avec, il y a boxing/unboxing, donc une diminution (parfois importante) des performances de l'application.

    Dans ta boucle avec les ArrayList, je ne vois pas de cast dans un type défini donc si tu ne lui dit pas de quel type est:

    myArrayList[index][i]

    il lui est impossible de savoir que:

    myArrayList[index][i].Contents

    existe

  3. #3
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Citation Envoyé par SDragon
    Je me suis donc tourné vers l'idée d'utiliser une boucle foreach comme suit
    elle est où la boucle foreach ?


    Utilise les generics :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Classe1> maListe = new List<Classe1>();
    Apres tu fais la boucle foreach :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach(Classe1 c in maListe)
    {
         //traitement de chaque objets c contenus dans maListe
    }

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    En fait, c'était une boucle foreach que je voulais faire au départ puis comme ça compilait pas, j'ai essayé de bidouiller une boucle for.

    En recoupant vos réponses, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ArrayList myArrayList = new ArrayList();
    myArrayList.Capacity = 3;
    myArrayList.Add(bookList);
    myArrayList.Add(comicsList);
    myArrayList.Add(romansfList);
    foreach (List<Class1> myList in myArrayList)
    {
       for (int i = 0; i < myList.Count; i++)
       {
          string s = myList[i].Contents.ToString();
          int baseIndex = Convert.ToInt32(myList[i].BaseIndex.ToString());
          ...
    }
    ...
    et là plus aucune erreur de compilation.
    Encore merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Traitement de Formulaire : générer des ensemble à partir d'une boucle foreach
    Par yodaazen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2006, 15h28
  2. [JSTL] boucle forEach pour deux liste en même temps
    Par ruud002 dans le forum Taglibs
    Réponses: 1
    Dernier message: 28/09/2006, 15h54
  3. [Tableaux] Boucle foreach inbriquée
    Par nebil dans le forum Langage
    Réponses: 17
    Dernier message: 10/09/2006, 11h40
  4. [C# 1.1]Boucles foreach imbriquees
    Par Nip dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/04/2006, 16h35
  5. [Tableaux] la boucle foreach
    Par jeanfrancois dans le forum Langage
    Réponses: 7
    Dernier message: 09/03/2006, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo