Partage
  • Partager sur Facebook
  • Partager sur Twitter

Renommer une variable dans une boucle

    30 mars 2012 à 19:26:11

    Bonjour,

    Ma question est un peu simpliste, mais je n'y ai pas trouvé réponse. Tout est dans le titre. ;) Disons, que j'ai ce code :

    string[] str_tab = new string(){"Patrice", "Dupont", "Patty"};
    foreach (int i in str_tab.Length){
      if (i == 0){
        string nom = str_tab[i];
      }
      else if (i == 1){
        string prenom = str_tab[i];
      }
      else if (i == 2){
        string surnom = str_tab[i];
      }
    }
    


    Pour trois cas, cela passe encore. Mais quand on en a 50... ^^ Bref, je voudrais créer une variable

    string data
    


    qui serait nom, prenom ou surnom selon les cas.

    J'ai pensé à faire :

    string[] data = new string(){"nom", "prenom", "surnom"};
    


    avant la boucle for, mais les noms de variable ne sont pas des string, donc cela ne marche pas.

    Pourriez-vous m'aider s'il vous plaît ?

    Merci !
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      31 mars 2012 à 10:03:07

      En gros, tu veux créer une sorte de "tableau" avec des colonnes "nom", "prenom" et "surnom" ?
      Crée une classe Utilisateur avec trois propriétés, et fais-en un tableau.
      • Partager sur Facebook
      • Partager sur Twitter
        31 mars 2012 à 11:06:05

        "Renommer une variable" est impossible. Mais tu peux créer des variables qui possèdent des "sous-variables" (propriétés), par exemple une variable utilisateur qui possèderait des propriétés Nom, Prenom et Surnom. Exemple :

        var utilisateur = new { Prenom = "Patrick", Nom = "Dupont", Surnom = "Patty" };
        
        Console.WriteLine("Le surnom de {0} {1} est {2}", utilisateur.Prenom, utilisateur.Nom, utilisateur.Surnom);
        

        En faisant ça tu crées une classe (anonyme ici, dont on utilise le mot-clé var) qui décrit ce qu'est un utilisateur. Si ce type de variable doit être utilisé à plusieurs endroits dans ton code, le mieux est d'en faire une vraie classe Utilisateur comme l'a dit Aethec. :)

        Au passage ta syntaxe de création de tableau n'est pas correcte (ce sont des [], pas des () ), et ta boucle foreach n'est pas correcte non plus : c'est soit
        foreach (string str in str_tab)
        {
        
        }
        

        soit
        for(int i=0; i<str_tab.Length; i++)
        {
        
        }
        

        , pas un mélange des deux.

        De plus, en supposant que tu utilises la boucle for :

        string[] str_tab = new string[]{"Patrice", "Dupont", "Patty"};
        for(int i=0; i < str_tab.Length; i++){
          if (i == 0){
            string nom = str_tab[i];
          }
          else if (i == 1){
            string prenom = str_tab[i];
          }
          else if (i == 2){
            string surnom = str_tab[i];
          }
        }
        

        Boucler sur les valeurs de i et faire une action spécifique pour chaque valeur de i en exploitant str_tab[i] n'a pas beaucoup d'utilité. Autant utiliser directement str_tab[0], str_tab[1] etc et écrire ceci, qui revient au même (avec des différences au niveau de la portée des variables) :
        string[] str_tab = new string[]{"Patrice", "Dupont", "Patty"};
        string nom = str_tab[0];
        string prenom = str_tab[1];
        string surnom = str_tab[2];
        


        Tu peux aussi combiner avec le code que j'ai donné plus haut, pour ne pas te retrouver avec un paquet de variables différentes :
        string[] str_tab = new string[]{"Patrice", "Dupont", "Patty"};
        var utilisateur = new { Prenom = str_tab[0], Nom = str_tab[1], Surnom = str_tab[2] };
        
        • Partager sur Facebook
        • Partager sur Twitter

        Renommer une variable dans une boucle

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown