我必须在运行时增加byte[]
数组大小
如何在运行时增加byte []数组大小?
答案 0 :(得分:57)
为什么似乎没有人知道 Array.Resize :
Array.Resize(ref myArray, 1024);
简单如馅饼。
PS:根据对MSDN的评论,显然这在3.0中的MSDN文档中没有找到;这可以解释它的流行点火
答案 1 :(得分:13)
你不能:数组是固定大小。 1
使用可重新调整大小的集合(例如List<byte>
)或创建一个新的更大的数组并复制原始数组的内容。
1 偶数Array.Resize不会修改传递的数组对象:它会创建一个新数组并复制元素。它只是为您节省编码。区别很重要:对旧数组的其他引用将继续看到旧数组。
答案 2 :(得分:7)
您可以分配一个新数组并使用Array.Copy(..)
byte[] oldArr = new byte[1024];
byte[] newArr = new byte[oldArr.Length * 2];
System.Array.Copy(oldArr, newArr, oldArr.Length);
oldArr = newArr;
答案 3 :(得分:3)
如果你必须增加它,为什么不首先使用List<byte>
开始?
答案 4 :(得分:2)
数组的大小固定,无法在运行时动态更改。
您唯一的选择是创建所需大小的新数组,并将旧数组中的所有字节复制到新数组。
但是为什么要用这个来折磨自己而不是使用List<byte>
而只是随意添加或删除元素?