【发布时间】:2011-05-16 12:02:22
【问题描述】:
我必须在运行时增加 byte[] 数组大小。
如何在运行时增加 byte[] 数组大小?
【问题讨论】:
-
change array size 的可能重复项
我必须在运行时增加 byte[] 数组大小。
如何在运行时增加 byte[] 数组大小?
【问题讨论】:
为什么似乎没人知道Array.Resize:
Array.Resize(ref myArray, 1024);
简单得像馅饼。
PS:_根据 MSDN 上的评论,显然 3.0 中的 MSDN 文档中缺少此内容。
【讨论】:
ref
你不能:数组是固定大小的。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(咧嘴笑)
tmp - 我把tmp 改成了oldArr 但忘了改方法,我的错。
如果你必须增加它,为什么不首先从List<byte> 开始呢?
【讨论】:
数组是固定大小的,不能在运行时动态改变。
您唯一的选择是创建一个所需大小的新数组,并将旧数组中的所有字节复制到新数组中。
但是为什么要用这个来折磨自己,而不是使用List<byte> 并简单地随意添加或删除元素呢?
【讨论】: