1. ホーム
  2. c#

[解決済み】C#の配列スライス

2022-04-03 05:17:45

質問

どうやるの?バイト配列が与えられると

byte[] foo = new byte[4096];

最初のxバイトを別の配列として取得するにはどうしたらよいでしょうか?(具体的には、私はそれを IEnumerable<byte> )

を操作するためのものです。 Socket s. 一番簡単な方法は、Perlsの構文に似た配列スライシングだと思います。

@bar = @foo[0..40];

この場合、最初の 41 要素を @bar という配列になります。C#で私が見落としているだけなのか、それとも他にやるべきことがあるのでしょうか?

LINQは私のためのオプションです(.NET 3.5)、それが少し役立つならば。

どのように解決するのですか?

配列は列挙可能である。 foo はすでに IEnumerable<byte> そのものです。 のようなLINQシーケンスメソッドを使用するだけです。 Take() を使えば、欲しいものが手に入ります。 Linq という名前空間を using System.Linq; ):

byte[] foo = new byte[4096];

var bar = foo.Take(41);

もし、どうしても配列が必要な場合は IEnumerable<byte> の値を使用することができます。 ToArray() メソッドを使用することができます。ここではそのようなことはないようです。