C# 提供了提取位元組數組部分的有效方法,這個過程稱為數組切片。 該技術避免了不必要的資料複製,從而提高了效能。
ArraySegment<T>
ArraySegment<T>
類別提供了一種輕量級的方式來表示陣列的一部分。 它非常適合在不建立新數組的情況下進行切片,從而節省記憶體。
<code class="language-csharp">byte[] foo = new byte[4096]; var slice = new ArraySegment<byte>(foo, 0, 40);</code>
這將建立 slice
,表示 foo
的前 40 個位元組。
IEnumerable<byte>
要迭代切片數組,請使用 ArraySegment<byte>
擴充方法(在 .NET 3.5 及更高版本中提供)將 IEnumerable<byte>
轉換為 AsEnumerable()
:
<code class="language-csharp">IEnumerable<byte> sliceAsEnumerable = slice.AsEnumerable();</code>
sliceAsEnumerable
現在允許輕鬆迭代所選位元組。
或者,LINQ 的 Take()
方法提供了一個簡潔的方法來實現相同的結果:
<code class="language-csharp">IEnumerable<byte> slicedBytes = foo.Take(40);</code>
這也會產生一個 IEnumerable<byte>
,其中包含 foo
的前 40 個位元組。
C# 透過 ArraySegment<T>
提供靈活的陣列切片以提高記憶體效率,並透過 LINQ 的 Take()
提供簡潔的程式碼。 兩者都是處理數組段的寶貴工具,特別是在網路程式設計等高效位元組操作至關重要的應用程式中。
以上是如何在C#中高效率實現數組切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!