レガシーコードでは、キーがすでに存在する場合、新しいキー値アイテムの追加や値の更新を容易にする次の拡張メソッドがあります。辞書に新規アイテムを追加するか、既存アイテムを更新する方法
方法-1(レガシーコード)。
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
if (map.ContainsKey(key))
{
map[key] = value;
}
else
{
map.Add(key, value);
}
}
けれども、私はmap[key]=value
がまったく同じ仕事をしていることを確認しています。すなわち、この方法は以下の方法2に置き換えることができる。
方法2。
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
私の質問は..私が方法-1を方法-2で置き換えると問題はありますか?可能性のあるシナリオでは破綻するでしょうか?
また、これはHashTableとDictionaryの違いだと思います。 HashTableでは、アイテムを更新することができます。また、ディクショナリを使用して新しいアイテムを追加することはできません。この違いはC#3.0バージョンでは排除されていますか?
ユーザーが同じキー値を再度送信する場合、このメソッドの目的はあまりにも例外ではなく、メソッドは新しい値でエントリを更新するだけで、新しいキーと値のペアが新しい場合は新しいエントリを作成する必要がありますメソッドに送信します。