none
Comment faire un for() loop avec une tuple list RRS feed

  • Question

  • Bonjour, j'aimerais pouvoir faire un for() loop, avec une tuple list (une list avec 2 variables différentes) et ensuite pouvoir changer l'une des 2 variables dans le for() loop. Quelqu'un pourrais m'aider ? Merci d'avance.
    lundi 11 mars 2013 05:18

Réponses

  • Bonjour,

    La classe tuple est en lecture seule uniquement. Il n'est donc pas possible de modifier la valeur de vos tuples. Il faudra donc recréer un nouveau tuple si vous souhaitez modifier ses valeurs.

    L'exemple suivant illustrent le changement de toutes les valeurs du premier élément d'une liste de tuples (de 2 éléments) :

    for(int i=0; i<liste.Count;i++)
    {
       liste[i] = new Tuple<int, string>(10, liste[i].Item2);
    }

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    lundi 11 mars 2013 06:41
    Modérateur

Toutes les réponses

  • Bonjour,

    La classe tuple est en lecture seule uniquement. Il n'est donc pas possible de modifier la valeur de vos tuples. Il faudra donc recréer un nouveau tuple si vous souhaitez modifier ses valeurs.

    L'exemple suivant illustrent le changement de toutes les valeurs du premier élément d'une liste de tuples (de 2 éléments) :

    for(int i=0; i<liste.Count;i++)
    {
       liste[i] = new Tuple<int, string>(10, liste[i].Item2);
    }

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    lundi 11 mars 2013 06:41
    Modérateur
  • Merci de cette réponse si rapidement,

    Y aurait t'il une autre méthode qui pourrait me permettre de stocker 2 variables dans une list dont je pourrais facilement changer l'une des données dans un for() loop autre que les tuples ?

    lundi 11 mars 2013 07:11
  • Bonjour,

    Biens que je ne sois pas trop sûr de bien saisir votre problématique, je vous propose le code suivant qui se base sur le DLR :

                var myList = new List<dynamic>();
    
                dynamic tuple1 = new System.Dynamic.ExpandoObject();
                tuple1.Item1 = 1;
                tuple1.Item2 = "1";
                myList.Add(tuple1);
    
                dynamic tuple2 = new System.Dynamic.ExpandoObject();
                tuple2.Item1 = 2;
                tuple2.Item2 = "2";
                myList.Add(tuple2);
    
                dynamic tuple3 = new System.Dynamic.ExpandoObject();
                tuple3.Item1 = 3;
                tuple3.Item2 = "3";
                myList.Add(tuple3);
    
                foreach (var tuple in myList)
                {
                    tuple.Item2 = "45";
                }

    Sinon la solution  la plus naturelle serait de créer sa propre classe Pair, en suite il suffit de travailler sur une liste de Pair :

            public class Pair<T, U>
            {
                public T Item1
                {
                    get;
                    set;
                }
    
                public U Item2
                {
                    get;
                    set;
                }
            }


    Cordialement.

    lundi 11 mars 2013 10:58
    Auteur de réponse