C# 配列サブセット: 配列部分の効率的な処理
単一のデータ型の要素を連続したメモリに格納する C# 配列では、多くの場合、元のデータを変更せずに特定の部分を操作する必要があります。 これは、ネットワーク通信 (ソケットから設定されたバイト数を受信する場合など) のように、大規模な配列を扱う場合に特に関係します。 一部の言語のように配列の直接スライスは組み込まれていませんが、ArraySegment<T>
は非常に効率的なソリューションを提供します。
課題:
大きなバイト配列を想像してください:
1 |
|
タスクは、重複した配列や x
コレクションを作成せずに、最初の IEnumerable<byte>
バイトを抽出することです。
ArraySegment<T>
解決策:
明示的なスライスの代わりに、C# は ArraySegment<T>
:
1 2 |
|
ArraySegment<T>
は軽量ラッパーとして機能し、データが重複することなく既存の配列の一部を参照します。
ArraySegment<T>
:
ArraySegment<T>
コンストラクターは 3 つの引数を取ります。
この例では、segment
は配列 a
内の "two" と "three" を指します。
ArraySegment<T>
の利点:
ArraySegment<T>
経由で要素にアクセスする方が、新しい配列を作成するよりも高速です。要約:
ArraySegment<T>
は、C# で配列のサブセットを操作するための合理的かつ効率的なアプローチを提供します。 パフォーマンスが向上し、メモリ消費が削減されるため、大規模なアレイやネットワーク操作を伴うシナリオに最適です。
以上がデータをコピーせずに C# で配列スライスを効率的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。