在一些遗留代码中,我看到了以下扩展方法,以方便添加一个新的键-值项或更新值,如果键已经存在。
方法-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
执行完全相同的工作。也就是说,这个方法可以替换为下面的method -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不允许!!这个差异在c# > 3.0版本中被消除了吗?
该方法的目的是如果用户再次发送相同的键值,该方法只需用新值更新条目,如果新的键值对已经发送给该方法,则创建一个新的条目。