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

C# Discussion :

Créer des variables avec un nom dynamique


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut Créer des variables avec un nom dynamique
    Bonjour à tous !

    Je développe un petit logiciel en C# sous VS 2005 mais il y a une partie qui me bloque complètement : j'ai besoin de créer un certain nombre de string, puis de les stocker dans un tableau.

    Pour cela :
    - je crée un tableau de string à 1 dimension dont la longueur est automatique
    - je mets le nombre d'éléments à créer dans une variable
    - je fais une boucle sur ce nombre d'éléments :
    - je crée un string
    - je l'ajoute dans mon tableau

    CODE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    List<string> myTableau = new List<string>();
    int nbF = 5;
    for (int i=0; i<nbF;i++)
    {
        string val[i] = new string();
        myTableau.Add(val[i]);
    }

    Cela revient à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string[] myTableau = new string[] {val0, val1, val2, val3, val4}
    Mais j'ai besoin de l'automatiser...

    Maintenant, ce code ne fonctionne pas et j'espère très sincèrement que vous avez une petite idée sur comment mettre ça en place !!

    Merci à qui aura une idée !

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Salut,

    ce que tu veux, c'est créer un tableau de taille 5 contenant des chaînes vides ? Tu n'as pas besoin de passer par une variable intermédiaire val[i] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<string> liste = new List<string>();
    for (int i = 0 ; i < 5 ; i++)
      liste.Add(new string());
    D'ailleurs, un tableau et une liste, ce n'est pas pareil Là, c'est une liste, c'est à dire un conteneur à taille variable ; alors qu'un tableau (noté string[] par exemple) est de taille fixe. Tu as tout intérêt à utiliser les listes plutôt que les tableaux.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    j'ai l'impression que ce que tu nous dit n'as pas de relation avec le titre de ton post

    sinon j'aurais proposé un dictionary (string,object), qui est pratique pour avoir des variables avec des noms dynamiques
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    j'ai l'impression que ce que tu nous dit n'as pas de relation avec le titre de ton post

    sinon j'aurais proposé un Dictionary(string,object), qui est pratique pour avoir des variables avec des noms dynamiques
    Je pensais exactement à la même chose, mais je ne suis pas certain d'avoir saisie ce que cherche à faire midoparis

    Au cas où:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dictionary<string, object> dic = new Dictionary<string, object>();
     
    dic.Add("strKey", "value");
    dic.Add("intKey", 17);
    dic.Add("dateKey", DateTime.Now);
     
    foreach (KeyValuePair<string, object> keyValue in dic)
    {
        Console.WriteLine(keyValue.Key + " :: " + keyValue.Value);
    }
    Console.ReadLine();
    Ce qui affichera:
    strKey :: value
    intKey :: 17
    dateKey :: 22/01/2009 12:14:27

  5. #5
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Salut,

    ce que tu veux, c'est créer un tableau de taille 5 contenant des chaînes vides ? Tu n'as pas besoin de passer par une variable intermédiaire val[i] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<string> liste = new List<string>();
    for (int i = 0 ; i < 5 ; i++)
      liste.Add(new string());
    D'ailleurs, un tableau et une liste, ce n'est pas pareil Là, c'est une liste, c'est à dire un conteneur à taille variable ; alors qu'un tableau (noté string[] par exemple) est de taille fixe. Tu as tout intérêt à utiliser les listes plutôt que les tableaux.

    Oui c'est exactement ça, à part que le chiffre 5 est récupéré dans une textbox, donc au début du programme je ne sais pas combien de string il faut que je crée..

    Sinon, comment faire ensuite pour modifier les string ?

    par exemple si je veux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int k =0;
    Foreach (string blabla in liste)
    {
    blabla = "string N°"+k;
    k++;
    }
    C'est quelquechose de correct ? Parce que je me dit que c'est bizarre qu'à aucun moment je ne spécifie le nom de la variable.. Je vais essayer, et si ça marche, bah tant mieux !!

  6. #6
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Citation Envoyé par midoparis Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int k =0;
    Foreach (string blabla in liste)
    {
    blabla = "string N°"+k;
    k++;
    }
    Ca marche !!

  7. #7
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Salut,

    D'ailleurs, un tableau et une liste, ce n'est pas pareil Là, c'est une liste, c'est à dire un conteneur à taille variable ; alors qu'un tableau (noté string[] par exemple) est de taille fixe. Tu as tout intérêt à utiliser les listes plutôt que les tableaux.
    Et c'est quoi la différence entre un tableau et une liste, à part évidemment la manière de la créer ?

    Pour être bien sûr :
    Liste :
    List<string> myList = new List<string>();

    Tableau à 10 lignes :
    string[] myTableau = new string[10];

    D'ailleurs est il possible de créer un tableau sans spécifier le nombre de lignes ? Merci !!

  8. #8
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par midoparis Voir le message
    Et c'est quoi la différence entre un tableau et une liste, à part évidemment la manière de la créer ?
    Le tableau a une taille fixe, déterminée au moment de sa création ; la liste a une taille variable. Dans la pratique,, on se sert quasiment toujours des List<T>.

    Et ton utilisation du foreach n'est pas correcte Si tu veux une liste contenant les chaînes "n°0", "n°1", "n°2", il te suffit d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int nbElements = 3;
    List<string> result = new List<string>();
    for (int k = 0 ; k < nbElements ; k++)
    {
      result.Add("n°" + k);
    }
    foreach sert à parcourir un ensemble d'objets sans se soucier de l'indexer (k, ici). Là, c'est précisément l'indexer qui t'intéresse, for est donc tout indiqué

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

Discussions similaires

  1. [Débutant] Declarer des variable avec un nom composé
    Par abd75web dans le forum VB.NET
    Réponses: 4
    Dernier message: 16/08/2013, 00h28
  2. créer des variables javascript dynamiquement dans un code php
    Par lau_the_raptor dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 14/07/2007, 12h10
  3. Créer des variables de classe dynamiquement
    Par Sebastien13 dans le forum Langage
    Réponses: 1
    Dernier message: 13/02/2007, 22h00
  4. Créer des variables dynamiques
    Par Sagouin64 dans le forum C++
    Réponses: 19
    Dernier message: 23/12/2006, 01h38
  5. [Variable] Déclarer une variable avec un nom dynamique
    Par jacquesh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/02/2006, 14h11

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