3 votes

Tableaux de chaînes de taille arbitraire en C#

Je veux définir un tableau de chaînes de caractères mais je ne connais pas le nombre de chaînes de caractères que je dois y stocker. Puis-je définir un tel tableau, et comment y insérer des chaînes de caractères ?

9voto

Ata Points 3959

Mieux vaut utiliser une liste comme celle-ci :

List<string> names = new List<string>();
names.Add(name); ///whatever string you want to insert

Plus tard, si vous avez besoin d'un tableau de noms, appelez :

string[] arr = names.ToArray();

Si vous devez utiliser un tableau de chaînes de caractères, vous devez en connaître la taille dès le départ. Si vous ne connaissez pas la taille, vous pouvez initialiser le tableau avec une longueur par défaut (disons 10). Les choses que vous devez faire sont les suivantes :

  • Conserver le compte des chaînes déjà ajoutées dans le tableau.
  • S'il atteint la longueur par défaut, vous devez réinitialiser le tableau avec une longueur supérieure (disons 15) et copier toutes les chaînes existantes dans ce nouveau tableau.
  • Vous devez vérifier les limites de ce tableau, vous ne voulez pas lire des index que vous n'avez pas encore utilisés (c'est-à-dire si l'index est plus grand que le nombre).

Il est donc préférable d'utiliser une liste plutôt que de faire tout cela soi-même.

6voto

Oded Points 271275

Vous pouvez utiliser un List<string> Il s'élargira au fur et à mesure que vous y ajouterez des éléments.

List<string> myList = new List<string>();
myList.Add("string1");
myList.Add("string2");

Il peut facilement être converti en tableau si nécessaire :

string[] stringArray = myList.ToArray();

Si vous ne connaissez pas le nombre exact d'éléments dont vous aurez besoin, un tableau n'est peut-être pas un bon choix, car vous devrez le redimensionner (ce qui est une opération coûteuse).

0voto

Aaron Points 4193

J'utiliserais la classe List. Vous pouvez ajouter autant de choses que vous le souhaitez sans avoir à savoir combien vous allez mettre dans la liste. Si vous avez une idée de la quantité à mettre dans la liste, vous pouvez utiliser l'argument capacité de la classe List pour éviter les problèmes de performance.

int capacity = 3;
var listOfNames = List<string>(/* optional */ capacity);
listOfNames.Add("My Name 1");
listOfNames.Add("My Name 2");
listOfNames.Add("My Name 3");

var namesArray = listOfNames.ToArray();

J'ai ajouté le namesArray au cas où vous auriez vraiment besoin d'un tableau au lieu d'une liste pour une raison quelconque.

Voir cette page pour voir tout ce que vous pouvez faire avec un List .

0voto

Vous pouvez utiliser ce qui suit, comme Oded l'a mentionné ci-dessus (ou ci-dessous), il se développera automatiquement lorsque des éléments seront ajoutés.

List<String> l = new List<String>();

l.Add("your string here");

...Et si vous voulez itérer, alors :

foreach(string i in l)
{
   // Do something with each item (i);
}

...Et d'avoir un Array :

String[] a =
     l.ToArray();

0voto

Brian Rasmussen Points 68853

Utilice List<T> . Par exemple

var list = new List<string>();
list.Add("string1");

si vous souhaitez que la liste soit un tableau, List<T> a un ToArray() méthode.

En interne List<T> stocke les données sous la forme d'un tableau de chaînes de caractères. Lorsque plus d'espace est nécessaire, il alloue un nouveau tableau d'une taille double de celle du tableau actuel et copie toutes les références dans le nouveau tableau. En d'autres termes, vous n'avez rien à faire, mais si le code est critique en termes de performances, vous pouvez vouloir fournir une capacité par défaut lors de la création de la liste.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X