C# 9.0、System.Memory
名前空間のSpan
とMemory
の比較です。Span
がIEnumerable
に変換できず苦労したことから、現在はMemory
びいきの内容になっています。ReadOnlySpan
、ReadOnlyMemory
に関しては適宜読み替えてください。
項目 | Span | Memory |
---|---|---|
種類 | ref struct | struct |
メモリ配置 | スタック | スタックorヒープ |
struct のメンバー変数 |
不可能 | 可能 |
ref struct のメンバー変数 |
可能 | 可能 |
Span への変換 |
可能 | 可能(Span プロパティ) |
Memory への変換 |
不可能 | 可能 |
IEnumerable への変換 |
不可能 | 可能(MemoryMarshal.ToEnumerable ) |
LINQの適用 | 不可能 | 可能(IEnumerable 経由) |
string.Join の適用 |
不可能 | 可能(IEnumerable 経由) |
ref T からの作成 |
可能(MemoryMarshal.CreateSpan ) |
不可能 |
※MemoryMarshal
はSystem
名前空間のクラスです。