首页 > 后端开发 > C++ > 如何在 C# 中对数组进行切片?

如何在 C# 中对数组进行切片?

Linda Hamilton
发布: 2025-01-14 20:15:48
原创
420 人浏览过

How Can I Slice an Array in C#?

C#中的数组切片

C#不像Perl那样可以直接使用@bar = @foo[0..40];的语法来切片数组。但是,有一些替代方法可以实现类似的功能。

ArraySegment

对于一个轻量级的选项,它避免了复制原始数组,可以考虑使用ArraySegment<T>。它表示数组的连续部分,而不会复制底层元素:

<code class="language-csharp">byte[] foo = new byte[4096];
var segment = new ArraySegment<byte>(foo, 0, 41);</code>
登录后复制

segment现在包含原始foo数组的前41个字节。您可以通过ArrayOffset属性访问其内容,或者直接在LINQ表达式中使用它。

LINQ Skip和Take

如果您更喜欢LINQ,您可以使用SkipTake方法来实现切片:

<code class="language-csharp">IEnumerable<byte> slice = foo.Skip(0).Take(41);</code>
登录后复制

slice将把foo数组的前41个字节作为一个IEnumerable<byte>序列返回。

自定义数组切片函数

如果ArraySegment和LINQ都不能满足您的需求,您可以使用索引范围创建一个自定义数组切片函数:

<code class="language-csharp">byte[] Slice(byte[] array, int startIndex, int length)
{
    byte[] slice = new byte[length];
    Array.Copy(array, startIndex, slice, 0, length);
    return slice;
}

byte[] slice = Slice(foo, 0, 41);</code>
登录后复制

以上是如何在 C# 中对数组进行切片?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板