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

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

Linda Hamilton
リリース: 2025-01-14 20:15:48
オリジナル
419 人が閲覧しました

How Can I Slice an Array in C#?

C# での配列スライス

C# は Perl とは異なり、@bar = @foo[0..40]; 構文を直接使用して配列をスライスできます。ただし、同様の機能を実現する代替手段がいくつかあります。

配列セグメント

元の配列のコピーを回避する軽量のオプションについては、ArraySegment<T> の使用を検討してください。これは、基礎となる要素をコピーせずに、配列の連続部分を表します:

<code class="language-csharp">byte[] foo = new byte[4096];
var segment = new ArraySegment<byte>(foo, 0, 41);</code>
ログイン後にコピー

segment には、元の foo 配列の最初の 41 バイトが含まれるようになりました。 Array 属性と Offset 属性を介してその内容にアクセスすることも、LINQ 式で直接使用することもできます。

LINQ スキップしてテイク

LINQ を使用したい場合は、Skip メソッドと Take メソッドを使用してスライスを実装できます。

<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 中国語 Web サイトの他の関連記事を参照してください。

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