【发布时间】:2010-09-29 05:18:01
【问题描述】:
你是怎么做到的?给定一个字节数组:
byte[] foo = new byte[4096];
如何将数组的前 x 个字节作为单独的数组获取? (具体来说,我需要它作为IEnumerable<byte>)
这是为了与Sockets 一起工作。我认为最简单的方法是数组切片,类似于 Perls 语法:
@bar = @foo[0..40];
这会将前 41 个元素返回到 @bar 数组中。 C# 中有什么我只是缺少的东西,还是我应该做的其他事情?
LINQ 对我来说是一个选项 (.NET 3.5),如果有帮助的话。
【问题讨论】:
-
数组切片是c# 7.2 github.com/dotnet/csharplang/issues/185的提议
-
C# 8.0 将看到原生数组切片的引入。 See answer for more details
-
您可能对 ArraySlice
感兴趣,它实现了对数组的切片,并以 step 作为原始数据的视图:github.com/henon/SliceAndDice