Ich habe eine elegante Ein-Zeilen-Lösung gefunden, die LINQ o Lambda Ausdruck, funktionieren beide gleich (LINQ wird bei der Kompilierung des Programms in Lambda umgewandelt). Die Lösung funktioniert für jeden Array-Typ und für eine beliebige Anzahl von Arrays.
LINQ verwenden:
public static T[] ConcatArraysLinq<T>(params T[][] arrays)
{
return (from array in arrays
from arr in array
select arr).ToArray();
}
Lambda verwenden:
public static T[] ConcatArraysLambda<T>(params T[][] arrays)
{
return arrays.SelectMany(array => array.Select(arr => arr)).ToArray();
}
Ich habe beides zur Verfügung gestellt, damit man es sich aussuchen kann. Leistung weise @Sergey Shteyn's o @deepee1's Lösungen sind etwas schneller, der Lambda-Ausdruck ist der langsamste. Die benötigte Zeit hängt vom Typ der Array-Elemente ab, aber solange es nicht Millionen von Aufrufen gibt, gibt es keinen signifikanten Unterschied zwischen den Methoden.