69 votes

Le moyen le plus efficace d’ajouter des tableaux en C #?

Je tire des données d'un ActiveX de la vieille école sous la forme de tableaux de doublons. Au départ, je ne connais pas le nombre final d'échantillons que je vais récupérer.

Quel est le moyen le plus efficace de concaténer ces tableaux en C # au fur et à mesure que je les sors du système?

82voto

Jon Skeet Points 692016

Vous ne pouvez pas ajouter à un tableau réel - la taille d'un tableau est fixée au moment de la création. Utilisez plutôt un List<T> qui peut croître au besoin.

Vous pouvez également conserver une liste de tableaux et les concaténer uniquement lorsque vous avez tout saisi.

Voir le billet de blog d'Eric Lippert sur les tableaux pour plus de détails et d'informations que je ne pourrais en fournir de façon réaliste :)

33voto

Lenny Woods Points 61

La concaténation de tableaux est simple avec les extensions linq fournies en standard avec .Net 4

La chose la plus importante à retenir est que linq fonctionne avec les objets IEnumerable<T> , aussi, pour obtenir un tableau comme résultat, vous devez utiliser la méthode .ToArray() à la fin.

Exemple de concaténation de tableaux à deux octets:

 byte[] firstArray = {2,45,79,33};
byte[] secondArray = {55,4,7,81};
byte[] result = firstArray.Concat(secondArray).ToArray();
 

30voto

michaelAngelo Points 313

Je pense que si vous souhaitez combiner deux tableaux du même type dans un troisième tableau, il existe un moyen très simple de le faire.

voici le code:

 String[] theHTMLFiles = Directory.GetFiles(basePath, "*.html");
String[] thexmlFiles = Directory.GetFiles(basePath, "*.xml");
List<String> finalList = new List<String>(theHTMLFiles.Concat<string>(thexmlFiles));
String[] finalArray = finalList.ToArray();
 

28voto

GeorgePotter Points 552

Je recommande la réponse trouvée ici: Comment concaténer deux tableaux en C #?

par exemple

 var z = new int[x.Length + y.Length];
x.CopyTo(z, 0);
y.CopyTo(z, x.Length);
 

6voto

SGRao Points 141

en utilisant cela, nous pouvons ajouter deux tableaux sans boucle.

Je pense que si vous souhaitez combiner deux tableaux du même type dans un tableau, il existe un moyen très simple de le faire.

Voici le code:

 String[] TextFils = Directory.GetFiles(basePath, "*.txt");
String[] ExcelFils = Directory.GetFiles(basePath, "*.xls");
String[] finalArray = TextFils.Concat(ExcelFils).ToArray();
 

ou

 String[] Fils = Directory.GetFiles(basePath, "*.txt");
String[] ExcelFils = Directory.GetFiles(basePath, "*.xls");
Fils = Fils.Concat(ExcelFils).ToArray();
 

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