假设我有以下变量:

byte[] fileData;
List<byte> bundleData;


并且我想使用fileData的连续部分并将其添加到bundleData。我当前的方法基本上是以下几种:

int startIndex = 20, endIndex = 80;
byte[] transferredData = new byte[endIndex - startIndex];
Array.Copy(fileData, startIndex, transferredData, 0, transferredData.Length);
bundleData.AddRange(transferredData);


创建中间数组可以很好地工作,但是它使用的似乎是不必要的副本。有什么方法可以直接添加数据,而无需使用冗余阵列?

作为参考,我在此项目上使用.NET 2.0。

最佳答案

如果您实际上不需要List 实例,则更好的选择可能是MemoryStream class

MemoryStream类
创建一个后备存储为内存的流。

例:

MemoryStream bundleData = new MemoryStream();
bundleData.Write(fileData, startIndex, endIndex - startIndex + 1);

10-08 15:24