ホームページ > バックエンド開発 > C++ > C# で配列スライスを効率的に実装するにはどうすればよいですか?

C# で配列スライスを効率的に実装するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-14 20:18:50
オリジナル
142 人が閲覧しました

How to Efficiently Implement Array Slicing in C#?

C# で配列スライスをマスターする

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 ベースのスライシング

代わりに、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート