.NET ImmutableDictionaryとFrozenDictionary
.NETで不変なDictionary型を使用したい場合、ImmutableDictionary<TKey,TValue>とFrozenDictionary<TKey,TValue>が候補になります。両者は似ていますが、用途が異なります。
ImmutableDictionaryは、要素を追加・削除しても元のインスタンスを変更せず、変更後の内容を持つ新しいインスタンスを返します。状態の履歴を保持したい場合や安全なスナップショットを共有したい場合に適しています。複数の要素をまとめて更新する場合はImmutableDictionary<TKey,TValue>.Builderを使用すると効率的です。
一方、FrozenDictionaryは作成後の更新を想定せず、検索性能を重視した型です。作成時に一定のコストがかかりますが、対応表や設定値など、一度作った後に何度も参照するデータに向いています。
継続的に更新されたバージョンを作成する場合はImmutableDictionary、完成済みのデータを高速に参照する場合はFrozenDictionaryを選ぶとよいでしょう。
HM
