【发布时间】:2011-05-13 19:17:14
【问题描述】:
在一些遗留代码中,我看到了以下扩展方法,以方便添加新的键值项或更新值(如果键已存在)。
方法 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 的工作完全相同。即该方法可以替换为下面的方法二。
方法二。
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
现在,我的问题是.. 如果我用 Method-2 替换 Method-1 会有什么问题吗?它会在任何可能的情况下中断吗?
另外,我认为这曾经是 HashTable 和 Dictionary 之间的区别。 HashTable 允许更新项目,或使用索引器添加新项目,而 Dictionary 不允许!在 C# > 3.0 版本中是否消除了这种差异?
这个方法的目的是如果用户再次发送相同的key-value不会抛出异常,该方法应该只是用新的值更新条目,如果已经发送了新的key-value对则创建一个新的条目方法。
【问题讨论】:
标签: c# dictionary