开发者社区> 问答> 正文

C#中的数组切片

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

byte[] foo = new byte[4096]; 我将如何获得数组的前x个字节作为单独的数组?(具体来说,我需要它作为IEnumerable )

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

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

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

展开
收起
保持可爱mmm 2020-01-16 16:06:45 1023 0
2 条回答
写回答
取消 提交回答
  • 语法为array[statrtIndex..length],也就是说length为40时返回的是前40个元素,最大索引为39

    2022-01-08 13:24:05
    赞同 展开评论 打赏
  • 数组是可枚举的,所以您本身foo就是一个数组IEnumerable 。只需使用LINQ序列方法Take()就可以从中获得想要的内容(不要忘了使用来包含Linq名称空间 using System.Linq;):

    byte[] foo = new byte[4096];

    var bar = foo.Take(41); 如果确实需要任何IEnumerable 值的数组,则可以使用该ToArray()方法。这里似乎并非如此。 问题来源于stack overflow

    2020-01-16 16:07:04
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载