Comment initialiser intelligemment un tableau avec deux (ou plus) autres tableaux en C#?Concaténation de tableau en C#
double[] d1 = new double[5]; double[] d2 = new double[3]; double[] dTotal = new double[8]; // I need this to be {d1 then d2}
Une autre question: Comment puis-je concaténer C# tableaux de façon efficace?
Répondre
Vous pouvez utiliser CopyTo:
double[] d1 = new double[5];
double[] d2 = new double[3];
double[] dTotal = new double[d1.Length + d2.Length];
d1.CopyTo(dTotal, 0);
d2.CopyTo(dTotal, d1.Length);
var dTotal = d1.Concat(d2).ToArray();
Vous pourriez probablement faire « mieux » en créant dtotal d'abord, puis simplement copier les deux entrées avec Array.Copy
.
Ceci sera inefficace pour grands tableaux. – SLaks
@SLaks: C'est pourquoi j'ai ajouté le petit peu supplémentaire, mais même pour les tableaux de taille meduim (jusqu'à 10000 éléments), vous ne remarquerez probablement pas la différence. Aussi Enumerable peut fournir une option rapide pour 'Concat' si les deux sont des tableaux (il faudra regarder la source pour confirmer). Mise à jour: Il n'a pas une option rapide pour n'importe quoi. – leppie
C'est génial car cela fonctionne aussi dans les initialiseurs. – tim
Vous devez appeler Array.Copy
, comme ceci:
double[] d1 = new double[5];
double[] d2 = new double[3];
double[] dTotal = new double[d1.length + d2.length];
Array.Copy(d1, 0, dTotal, 0, d1.Length);
Array.Copy(d2, 0, dTotal, d1.Length, d2.Length);
using System.Linq;
int[] array1 = { 1, 3, 5 };
int[] array2 = { 0, 2, 4 };
// Concat array1 and array2.
var result1 = array1.Concat(array2).ToArray();
Si vous avez des tableaux que vous devez changer ou mélanger et assortir comme celui-ci, vous devriez probablement utiliser une liste générique à la place. –
duplication possible de [Comment concaténer deux tableaux en C#?] (Http://stackoverflow.com/questions/1547252/how-do-i-concatenate-two-arrays-in-c) –