我可以创建一个包含现有数组子集的新数组引用,而无需复制内存吗?

Jam*_*s L 4 c# memory arrays buffer subset

我正在使用C#构建文件阅读器,并且将枚举大量数据.我想为我读出的每个元素使用相同的缓冲区,然后传递缓冲区以供客户端进一步处理.如果我可以返回byte[]正确的大小而不是原始缓冲区和长度,那么API会更干净.

是否可以在C#中执行此操作而无需复制内存?

der*_*dex 7

您可以使用 ArraySegment<T>

http://msdn.microsoft.com/en-us/library/1hsbd92d.aspx

这使您可以指定要传递的段的开始和结束而不复制任何数据.