首頁 >後端開發 >C++ >如何在 C# 中對陣列進行切片?

如何在 C# 中對陣列進行切片?

Linda Hamilton
Linda Hamilton原創
2025-01-14 20:15:48422瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn