Créer dynamiquement des variables

Résolu
Signaler
Messages postés
18
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
22 janvier 2009
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
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 :



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 :



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 ;) !

7 réponses

Messages postés
18
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
22 janvier 2009

J'ai trouvé une solution :

int nbVal = 5;
List<string> maListe = new List<string>();
for(int i = 0 ; i < nbVal ; i++)
{
liste.Add(newstring());
}

int k =0;
Foreach(string blabla in maListe)
{
blabla = "string N°"+k;
k++;
}

Sinon, maitredede, la fonction .ToArray() m'aurait permis de faire quoi exactement ?
Merci !
Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
8
Tu ne peux pas créer de variables dynamiquement en c#

Tu veux faire quoi exactement?
Messages postés
153
Date d'inscription
vendredi 9 août 2002
Statut
Membre
Dernière intervention
18 septembre 2009

Tu peux utiliser la fonction ToArray() de List<> :

string[] tableau = myTbleau.ToArray();
Messages postés
153
Date d'inscription
vendredi 9 août 2002
Statut
Membre
Dernière intervention
18 septembre 2009

La fonction ToArray() convertit ton objet List<> en tableau...

To morceau de code, je sais pas très bien ce que tu veux faire... Si c'est juste créer une liste de string avec un numéro dedans, tu peux faire comme ça :

List<string> lst = new List<string>();
int nbr = 5;
for(int i=0;i<nbr;i++)
{
  lst.Add(string.Format("String n°{0}", i));
}

string[] myTableau = lst.ToArray();
Messages postés
18
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
22 janvier 2009

La finalité du truc n'est pas de faire un tableau de string, mais d'objets d'une classe que j'ai créée, et je dois faire un traitement sur chacun de ces objets avant de les afficher, sachant que le nombre d'objet à créer est calculé selon plusieurs paramètres variables.

Et sinon, c'est quoi l'interet de transformer ma liste en tableau ? est ce que ça reste correct si je conserve ma liste pour faire tous les traitements ?
Messages postés
153
Date d'inscription
vendredi 9 août 2002
Statut
Membre
Dernière intervention
18 septembre 2009

Liste ou tableau, ça revient au même dans l'absolu... Il y a sûrement une différence de performance, mais qui n'est notable que sur les grandes collections...

Sinon, vu que ton premier message est relativement obscure, pas clair etc... c'est pour ça qu'on a du mal à comprendre ton besoin...

Bonne continuation sur le réseau Code-SourceS
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, on a du mal à comprendre ce que tu veux faire.. pour info la liste supporte aussi l'opérateur d'indexation :

List< string > list = new List< string >( );
list.Add( "Lutinore" );
MessageBox.Show( list[ 0 ] );