Мне нужно увеличить размер массива byte[]
во время выполнения.
Как увеличить размер байта [] во время выполнения?
Как увеличить размер байта [] во время выполнения?
Ответ 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>
и просто добавлять или удалять элементы по своему усмотрению?