Просто щоб це було зазначено як варіант: якщо масиви, з якими ви працюєте, мають примітивний тип - Boolean (bool), Char, SByte, Byte, Int16 (короткий), UInt16, Int32 (int), UInt32, Int64 (long ), UInt64, IntPtr, UIntPtr, Single або Double - тоді ви можете (або повинні?) Спробувати скористатися Buffer.BlockCopy . Відповідно до сторінки MSDN для класу Buffer :
Цей клас забезпечує кращу ефективність для маніпулювання примітивними типами, ніж аналогічні методи класу System.Array .
Використовуючи приклад C # 2.0 @ OwenP в відповідь в якості відправної точки, вона буде працювати наступним чином :
int[] front = { 1, 2, 3, 4 };
int[] back = { 5, 6, 7, 8 };
int[] combined = new int[front.Length + back.Length];
Buffer.BlockCopy(front, 0, combined, 0, front.Length);
Buffer.BlockCopy(back, 0, combined, front.Length, back.Length);
Різниця в синтаксисі між Buffer.BlockCopy
і тим, Array.Copy
що використовується @OwenP, ледь не має, але це має бути швидше (навіть якщо лише незначно).