ArraySegmentの用途は何ですか クラス?質問する

ArraySegmentの用途は何ですか クラス?質問する

ArraySegment<byte>クラスをサブクラス化しているときに、この型に遭遇しましたMessageEncoder

これは、指定された配列のセグメントであり、オフセットを取り、列挙可能ではなく、インデクサーを持たないことは理解できましたが、その使用法がまだわかりません。誰か例を挙げて説明してもらえませんか?

ベストアンサー1

ArraySegment<T>非常に便利になりました.NET 4.5+ および.NET コア現在実装されているもの:

  • IList<T>
  • ICollection<T>
  • IEnumerable<T>
  • IEnumerable
  • IReadOnlyList<T>
  • IReadOnlyCollection<T>

とは対照的に.NET 4 バージョンインターフェースをまったく実装していませんでした。

これで、クラスは LINQ の素晴らしい世界に参加できるようになり、コンテンツのクエリ、元の配列に影響を与えずにコンテンツの反転、最初の項目の取得など、通常の LINQ 操作を実行できるようになりました。

var array = new byte[] { 5, 8, 9, 20, 70, 44, 2, 4 };
array.Dump();
var segment = new ArraySegment<byte>(array, 2, 3);
segment.Dump(); // output: 9, 20, 70
segment.Reverse().Dump(); // output 70, 20, 9
segment.Any(s => s == 99).Dump(); // output false
segment.First().Dump(); // output 9
array.Dump(); // no change

おすすめ記事