265 votes

Fusion de deux tableaux dans .Net

Existe-t-il une fonction intégrée dans .Net 2.0 qui prendra deux tableaux et les fusionnera en un seul tableau? Les tableaux sont tous deux du même type. J'obtiens ces tableaux à partir d'une fonction largement utilisée dans ma base de code et je ne peux pas modifier la fonction pour renvoyer les données dans un format différent.

Je cherche à éviter d'écrire ma propre fonction pour accomplir cela si possible.

499voto

OwenP Points 11164

En C # 3.0, vous pouvez utiliser LINQ pour accomplir cela facilement:

 int[] front = { 1, 2, 3, 4 };
int[] back = { 5, 6, 7, 8 };
int[] combined = front.Concat(back).ToArray();
 

En C # 2.0, vous n’avez pas un moyen aussi direct, mais Array.Copy est probablement la meilleure solution:

 int[] front = { 1, 2, 3, 4 };
int[] back = { 5, 6, 7, 8 };

int[] combined = new int[front.Length + back.Length];
Array.Copy(front, combined, front.Length);
Array.Copy(back, 0, combined, front.Length, back.Length);
 

Cela pourrait facilement être utilisé pour implémenter votre propre version de Concat .

134voto

Blair Conrad Points 56195

Si vous pouvez manipuler l'un des tableaux, vous pouvez le redimensionner avant d'effectuer la copie:

 T[] array1 = getOneArray();
T[] array2 = getAnotherArray();
int array1OriginalLength = array1.Length;
Array.Resize<T>(ref array1, array1OriginalLength + array2.Length);
Array.Copy(array2, 0, array1, array1OriginalLength, array2.Length);
 

Sinon, vous pouvez créer un nouveau tableau

 T[] array1 = getOneArray();
T[] array2 = getAnotherArray();
T[] newArray = new T[array1.Length + array2.Length];
Array.Copy(array1, 0, newArray);
Array.Copy(array2, 0, newArray, array1.Length, array2.Length);
 

Plus d'informations sur les méthodes Array disponibles sur MSDN .

118voto

Simon B. Points 31

Pourquoi ne pas simplement utiliser linq?

 var arr1 = new[] { 1, 2, 3, 4, 5 };
var arr2 = new[] { 6, 7, 8, 9, 0 };
var arr = arr1.Union(arr2).ToArray();
 

7voto

GEOCHET Points 13787

Je pense que vous pouvez utiliser Array.Copy pour cela. Il prend un index source et un index de destination, vous devriez donc pouvoir ajouter un tableau à l’autre. Si vous avez besoin d’aller plus complexe que d’en ajouter un à l’autre, ce n’est peut-être pas le bon outil pour vous.

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