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