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 ?
Réponses
Trop de publicités?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.
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).
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
.
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();
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.
- Réponses précédentes
- Plus de réponses