Span構造体とstackalloc 式

集合
C#7.2 以降で使えます。.NET Core2.0以前ならSystem.Memoryというパッケージが必要です。

配列やコレクションやストリームやその他諸々の連続した領域の一部に効率的にアクセスできるための機能です。 .NET 5では標準パッケージに載る機能なので、普通に使われるようになるかもしれません。

            var array = new[]{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

            var span = new Span<int>(array, 5, 2);

            for (int i = 0; i < span.Length; i++)
                span[i] = 10;

            // 0, 1, 2, 3, 4, 10, 10, 7, 8, 9

サンプルにあるような簡易なコードでは利点も見えてきませんが、大量のデータを効率的にアクセスするには重要な機能となるかもしれません。

詳細は以下の記事などをご参照下さい。
Span 構造体 (System)
任意のメモリの隣接した領域をタイプセーフかつメモリセーフで表します。Provides a type- and memory-safe representation of a contiguous region of arbitrary memory.
Span構造体
概要 Ver. 7.2 Span構造体(System名前空間)は、span (区間、範囲)という名前通り、連続してデータが並んでいるもの(配列など)の一定範囲を読み書きするために使う型です。 この型によ…
Span構造体
Span型は「連続したメモリ領域とその操作」を抽象化して、元のメモリ領域の種類によらず、それらを統一的かつ効率的に扱えるようにするもの。
Spanを使うべき5つの理由 - Qiita
C# 7.2からSpan構造体というのが使えるようになって、こいつが結構すごいやつなんだが、いかんせん日本語記事が少ない。なら自分で書いて広めるしかないんじゃい!ということで、なんとなくでも凄さが伝わればいいなって思います。 マサカ...
構造体型 - C# リファレンス
C# での構造体型について
stackalloc 式 - C# リファレンス
stackalloc 式 - C# リファレンス
集合
スポンサーリンク
C#プログラミング再入門
タイトルとURLをコピーしました