如果兩個數組都是完全相同的類型,你可以使用:
public static T[] Concatenate<T>(T[] a, T[] b)
{
if (a == null) throw new ArgumentNullException("a");
if (b == null) throw new ArgumentNullException("b");
T[] result = new T[a.Length + b.Length];
Array.Copy(a, result, a.Length);
Array.Copy(b, 0, result, a.Length, b.Length);
return result;
}
否則
public static TResult[] Concatenate<TResult, T1, T2>(T1[] a, T2[] b)
where T1 : TResult where T2 : TResult
{
if (a == null) throw new ArgumentNullException("a");
if (b == null) throw new ArgumentNullException("b");
TResult[] result = new TResult[a.Length + b.Length];
Array.Copy(a, result, a.Length);
Array.Copy(b, 0, result, a.Length, b.Length);
return result;
}
應該做的。
編輯: 也許Array.Copy()不是是快,所以它可以對LINQ的CONCAT進行基準測試,或者一個強類型版本可以定製。
只是我還是會失敗。 T1和T2沒有定義,不能轉換爲T – LorenVS 2009-08-19 15:26:43
好!有很多很好的新方法支持LINQ。 – akmad 2009-08-19 15:26:46
@Loren:我現在修好了。使用不同的參數類型可能實際上是有意義的,但是(如果它們以某種方式可以相互轉換)。我會暫時放棄它,看看OP有什麼話要說。 – 2009-08-19 15:27:46