C# は、バイト配列の一部を抽出するための効率的な方法、つまり配列スライスとして知られるプロセスを提供します。 この手法により、不必要なデータのコピーが回避され、パフォーマンスが向上します。
ArraySegment<T>
ArraySegment<T>
クラスは、配列の一部を表す軽量の方法を提供します。 新しい配列を作成せずにスライスするのに最適で、メモリを節約できます。
<code class="language-csharp">byte[] foo = new byte[4096]; var slice = new ArraySegment<byte>(foo, 0, 40);</code>
これにより、slice
の最初の 40 バイトを表す foo
が作成されます。
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>
の最初の 40 バイトを含む foo
も生成されます。
C# は、メモリ効率を高めるために ArraySegment<T>
を介して柔軟な配列スライスを提供し、コードを簡潔にするために LINQ の Take()
を提供します。 どちらも、特に効率的なバイト操作が重要であるネットワーク プログラミングのようなアプリケーションにおいて、配列セグメントを処理するための貴重なツールです。
以上がC# で配列スライスを効率的に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。