データを一連の名前付きリストとして保存したいとしましょう。
私はあなたができる方法が本当に好きDictionary
です:
myDictionary["SomeKey"] = new List<string>{ "SomeString" };
しかし、残念ながら、私は安全に行うことができません:
myDictionary["SomeKey"].Add("SomeString");
List
atSomeKey
がまだ初期化されていない場合、 null 参照例外が発生するためです。
したがって、辞書の値を変更するたびに、次のことを行う必要があります。
if (!myDictionary.ContainsKey("SomeKey")) myDictionary["SomeKey"] = new List<string>();
各リストに安全に追加する前に。見栄えが悪く、ボイラープレート以外のコードから注意がそらされます。また、いくつかの場所でコードを複製します( 「空かどうかに関係なく、SomeKey
この要素を のリストに追加する」ということだけを言いたいときに何度かアクセスします)。SomeKey
に初期化されていない値が必要な理由は基本的にありませんDictionary
。の配列である場合、List
事前にすべての要素をループして、各メンバーを初期化します。Dictionary
事前にキーがどうなるかわからないので、これはできません。
「このキーの値にアクセスし、null の場合は初期化する」というより簡潔な構文はありますか?