CollectionsMarshal.GetValueRefOrNullRef
.NET 6 以降で使用できる、かゆいところに手が届くメソッド。Dictionary の low-level 操作ができる
Dictionary のあるキーに対応する値への参照を取得できる
Dictionary に存在しないキーへの参照は null 参照として取得できる
Unsafe.IsNullRef() で取得された参照が null 参照であるかどうかを判定できる
null 参照を避けたい場合は CollectionsMarshal.GetValueRefOrAddDefault を使うと便利
Dictionary に存在しないキーを参照しようとすると default で初期化される
code:cs
var dictionary = new Dictionary<string, string> {
{"key", "value"},
};
ref var keyRef = ref CollectionsMarshal.GetValueRefOrNullRef(dictionary, "key");
keyRef = "value2";
ref var key2Ref = ref CollectionsMarshal.GetValueRefOrAddDefault(dictionary, "key2");
// dictionary
// {"key": "value2", "key2": null}