Просто чтобы отметить это как вариант: если массивы, с которыми вы работаете, имеют примитивный тип Boolean (bool), Char, SByte, Byte, Int16 (короткий), UInt16, Int32 (int), UInt32, Int64 (длинный) , UInt64, IntPtr, UIntPtr, Single или Double, тогда вы можете (или должны?) Попробовать использовать Buffer.BlockCopy. Согласно странице MSDN для класса Buffer:
Этот класс обеспечивает лучшую производительность для управления примитивными типами, чем аналогичные методы в системе . Класс 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 практически не отличается, но это должно быть быстрее (пусть даже немного).
19.02.2017
Array.Resize
фактически не изменяет размер массива, а копирует его. Вот почему первый параметр - по ссылке (что означает, что ваш первый код, вероятно, не будет компилироваться). 16.04.2012