【发布时间】:2021-04-28 20:13:09
【问题描述】:
在 C#/.NET 中是否有任何方法可以在现有的 byte[] 上“叠加”或映射 MemoryStream,以免不必要地复制数据?
在尝试将byte[] 转换为流时,标准解决方案是使用MemoryStream 及其Write 函数,如下所示:
byte[] myArray = new byte[10]; // or, e.g. retrieve from DB
MemoryStream stream = new MemoryStream();
stream.Write(myArray, 0, myArray.Length);
或者,这可以缩短为:
byte[] myArray = new byte[10]; // or, e.g. retrieve from DB
MemoryStream stream = new MemoryStream(myArray);
其实是一回事。
这存在必须将数组的全部内容复制到流中的问题,因此占用了 2X 的内存量。考虑到字节数组可能非常大,这似乎并不令人满意。数据已经在内存中,在一个连续的块中,所以...
内存流能否以某种方式原地映射到字节数组?
【问题讨论】:
标签: c# .net .net-core binary-data