Вы можете использовать Array.Resize, но все, что это действительно делает, это сделать усеченную копию исходного массива, а затем заменить исходный массив на новый.
Ответ 3
private static void Truncate() {
byte[] longArray = new byte[] {1,2,3,4,5,6,7,8,9,10};
Array.Resize(ref longArray, 5);//longArray = {1,2,3,4,5}
//if you like linq
byte[] shortArray = longArray.Take(5).ToArray();
}
Ответ 4
Кстати, метод Array.Resize требует гораздо больше времени для завершения. В моем простом случае мне просто нужно было изменить размер массива байтов (~ 8000 элементов до ~ 20 элементов):
Array.Resize//1728 тиков
Array.Copy//8 тиков
Ответ 5
Обычно я создаю метод расширения:
public static byte[] SubByteArray(this byte[] byteArray, int len)
{
byte[] tmp = new byte[len];
Array.Copy(byteArray, tmp, len);
return tmp;
}
Что можно вызывать в массиве байтов так легко:
buffer.SubByteArray(len)
Ответ 6
Вы не можете обрезать массив в С#. Они фиксированы по длине.
Если вам нужна структура данных, которую вы можете усекать и действовать как массив, вы должны использовать List<T>. Для этого вы можете использовать метод List<T>.RemoveRange.