を使用している場合Hashtable
、次のようなコードを記述できます。
object item = hashtable[key] ?? default_value;
key
に表示されているかどうかに関係なく機能しますHashtable
。
私はそれを行うことはできませんDictionary<TKey. TValue>
。キーがディクショナリに存在しない場合は、KeyNotFoundException
. したがって、次のようなコードを書く必要があります。
MyClass item;
if (!(dict.TryGetValue(key, out item))
{
item = default_value;
}
これはなぜだろうと思います。 Dictionary<TKey, TValue>
は単なるラッパーHashtable
です。なぜこの制限が追加されたのですか?
編集:
PopCatalin の回答 (以下を参照) の別の観点から、辞書の値が値型の場合、上記のコードは機能しません。を使用している場合Dictionary<int, int>
、使用したいコードは次のようになります。
int i = dict[key] ?? default_value;
dict[key]
null許容型または参照型ではないため、コンパイルされません。