在某些旧代码中,我看到了以下扩展方法,以方便添加新的键值项或更新值(如果键已存在)。
方法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;
}
现在,我的问题是..如果我将Method-1替换为Method-2,会出现任何问题吗?它在任何可能的情况下会破裂吗?
另外,我认为这曾经是HashTable和Dictionary之间的区别。HashTable允许更新项目,或通过使用索引器添加新项目,而Dictionary不支持!在C#> 3.0版本中是否消除了这种差异?
如果用户再次发送相同的键值,则此方法的目标不是抛出异常,该方法应仅使用新值更新条目,如果已将新的键值对发送给该方法,则创建一个新条目。