【发布时间】:2020-12-09 06:46:37
【问题描述】:
如果有人给我一个 ArraySegment<byte> foo 并且这个段指向一个更大的缓冲区,那么将这个段复制到一个新的 byte[] 的惯用方法是什么?
我尝试访问foo.Array,但这似乎指向较大缓冲区的开头,而不是段的开头。
例如较大的缓冲区可能是“blahfoobar”,而 ArraySegment 指向“foo”。我想用“foo”获得byte[]。
我确信它非常简单,但是来自 C++,我无法理解 c# 中使用的术语。
【问题讨论】:
-
我看到 ArraySegment 实现了 ICollection,所以你必须有 ToArray 方法
-
@PiGi78 仅适用于 .Net 4.5 及更高版本和 .Net Core,它实现了比 ICollection 更多的迭代类型:stackoverflow.com/a/7907024/495455 - OP 看起来您需要遍历 ArraySegments 转换 ToArray 并加入数组在一起。
标签: c#