我需要在运行时增加byte[]
数组大小。
如何在运行时增加byte[]
数组大小?
为什么似乎没有人知道 Array.Resize?
Array.Resize(ref myArray, 1024);
简单易行。
注:根据MSDN上的一条评论,显然在3.0版的MSDN文档中缺少了这个内容。
ref
的原因。 - Alex from Jitbit你不能:数组大小是固定的。1
要么使用可调整大小的集合(例如:List<byte>
),要么创建一个更大的新数组并将原始数组的内容复制到其中。
1即使使用Array.Resize,也不会修改传递的数组对象:它只是创建一个新的数组并复制元素。它只是为了节省您编写这个过程所需的代码。这种差异很重要:对旧数组的其他引用将继续看到旧数组。
Array.Copy(..)
分配一个新的数组并将字节复制过去。byte[] oldArr = new byte[1024];
byte[] newArr = new byte[oldArr.Length * 2];
System.Array.Copy(oldArr, newArr, oldArr.Length);
oldArr = newArr;
Array.Resize
时,临时变量是您不需要的(微笑)。 - sehetmp
- 我把 tmp
改成了 oldArr
,但是忘记在方法中修改它了,我的错。 - KevinList<byte>
呢?数组是固定大小的,无法在运行时进行动态更改。
您唯一的选择是创建所需大小的新数组,并将所有字节从旧数组复制到新数组中。
但为什么要这样折磨自己,而不使用 List<byte>
并随意添加或删除元素呢?