如何在运行时增加byte []大小?

jam*_*ams 21 c# arrays

我必须byte[] 在运行时增加数组大小.
如何在运行时增加byte []数组大小?

seh*_*ehe 59

为什么似乎没有人知道Array.Resize:

 Array.Resize(ref myArray, 1024);
Run Code Online (Sandbox Code Playgroud)

简单如馅饼.

PS:根据对MSDN的评论,显然这在3.0中的MSDN文档中没有找到; 这可以解释它的流行点燃

  • 请注意,这会创建一个新数组,如果您在某个地方引用了旧数组,则该数组将不会更新. (8认同)
  • +1只是为了知道这存在...然而,一个人可能是迂腐的并且说这实际上并没有改变传递的数组的大小. (2认同)

Ric*_*ard 15

你不能:数组是固定大小的.1

使用可重新调整大小的集合(例如List<byte>)或创建一个新的更大的数组并复制原始数组的内容.


1 Even Array.Resize不会修改传递的数组对象:它会创建一个新数组并复制元素.它只是为您节省编码.区别很重要:对旧数组的其他引用将继续查看旧数组.


Kev*_*vin 7

您可以分配一个新数组并将字节复制过来 Array.Copy(..)

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

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

oldArr = newArr;
Run Code Online (Sandbox Code Playgroud)