Créer dynamiquement des variables

Résolu
midoparis Messages postés 18 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 22 janvier 2009 - 22 janv. 2009 à 03:25
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 22 janv. 2009 à 17:35
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

midoparis Messages postés 18 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 22 janvier 2009
22 janv. 2009 à 13:42
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 !
3
WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
22 janv. 2009 à 08:36
Tu ne peux pas créer de variables dynamiquement en c#

Tu veux faire quoi exactement?
0
maitredede Messages postés 153 Date d'inscription vendredi 9 août 2002 Statut Membre Dernière intervention 18 septembre 2009
22 janv. 2009 à 09:01
Tu peux utiliser la fonction ToArray() de List<> :

string[] tableau = myTbleau.ToArray();
0
maitredede Messages postés 153 Date d'inscription vendredi 9 août 2002 Statut Membre Dernière intervention 18 septembre 2009
22 janv. 2009 à 13:48
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();
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
midoparis Messages postés 18 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 22 janvier 2009
22 janv. 2009 à 13:54
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 ?
0
maitredede Messages postés 153 Date d'inscription vendredi 9 août 2002 Statut Membre Dernière intervention 18 septembre 2009
22 janv. 2009 à 14:06
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
22 janv. 2009 à 17:35
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 ] );
0