在一些遺留代碼中,我已經看到以下擴展方法,以便於添加新的鍵值項或更新值(如果鍵已經存在)。方法-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版本中被消除了嗎?
如果用戶再次發送相同的鍵值,該方法的目標不是太拋出異常,該方法應該只更新具有新值的條目,並且如果新鍵值對已經被創建爲新條目發送到該方法。