在某些旧代码中,我看到了以下扩展方法,以方便添加新的键值项或更新值(如果键已存在)。
方法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版本中是否消除了这种差异?
如果用户再次发送相同的键值,则此方法的目标不是抛出异常,该方法应仅使用新值更新条目,如果已将新的键值对发送给该方法,则创建一个新条目。