小编典典

C#中的数组切片

c#

你怎么做呢?给定一个字节数组:

byte[] foo = new byte[4096];

我将如何获得数组的前x个字节作为单独的数组?(具体来说,我需要它作为IEnumerable<byte>

这是与Sockets 一起使用的。我认为最简单的方法是数组切片,类似于Perls语法:

@bar = @foo[0..40];

它将返回前41个元素到@bar数组中。我只是想在C#中缺少某些东西,还是应该做一些其他事情?

LINQ对我来说是一个选项(.NET 3.5),如果有帮助的话。


阅读 3313

收藏
2020-05-19

共1个答案

小编典典

数组是可枚举的,所以您本身foo就是一个数组IEnumerable<byte>。只需使用LINQ序列方法Take()就可以从中获得想要的内容(不要忘了使用来包含Linq名称空间 using System.Linq;):

byte[] foo = new byte[4096];

var bar = foo.Take(41);

如果确实需要任何IEnumerable<byte>值的数组,则可以使用该ToArray()方法。这里似乎并非如此。

2020-05-19