Подтвердить что ты не робот

Как увеличить размер байта [] во время выполнения?

Мне нужно увеличить размер массива byte[] во время выполнения.
Как увеличить размер байта [] во время выполнения?

4b9b3361

Ответ 1

Почему никто, кажется, не знает Array.Resize:

 Array.Resize(ref myArray, 1024);

Просто как пирог.

PS: согласно комментарию по MSDN, по-видимому, это отсутствовало в документации MSDN в версии 3.0; это может объяснить это популярное игнорирование

Ответ 2

Вы не можете: массивы фиксированного размера. 1

Используйте либо повторно значимую коллекцию (например, List<byte>), либо создайте новый более крупный массив и скопируйте содержимое исходного массива.


1 Даже Array.Resize не изменяет переданный объект массива: он создает новый массив и копирует элементы. Это просто экономит ваше кодирование. Разница важна: другие ссылки на старый массив будут продолжать видеть старый массив.

Ответ 3

Вы можете выделить новый массив и скопировать байты с помощью Array.Copy(..)

byte[] oldArr = new byte[1024];
byte[] newArr = new byte[oldArr.Length * 2];

System.Array.Copy(oldArr, newArr, oldArr.Length);

oldArr = newArr;

Ответ 4

Если вам нужно увеличить его, почему бы не начать с List<byte> в первую очередь?

Ответ 5

Массив имеет фиксированный размер и не может быть динамически изменен во время выполнения.

Ваш единственный вариант - создать новый массив требуемого размера и скопировать все байты из старого массива в новый.

Но зачем мучить себя этим, вместо использования List<byte> и просто добавлять или удалять элементы по своему усмотрению?