假設我需要增加一個條目的Value
在Dictionary
,如:如何僅使用單個鍵查找來更改字典條目?
public void Increment(string key, int increment)
{
m_dict[key] += increment;
}
而且還假設我需要使其工作時,有對key
沒有條目,如:
public void Increment(string key, int increment)
{
if (m_dict.ContainsKey(key))
{
m_dict[key] += increment;
}
else
{
m_dict[key] = increment;
}
}
有沒有辦法將key
查找的數量減少到一個?
我能想到的最好的解決方法是以下,這是一個有點笨重,使用兩個查找:
public void Increment(string key, int increment)
{
long value;
if (m_dict.TryGetValue(key, out value))
{
m_dict[key] = value + increment;
}
else
{
m_dict.Add(key, increment);
}
}
這是你可以得到的最好的。 – 2013-04-05 13:03:01
爲什麼不使用第二個代碼塊並用'm_dict.Add(key,increment)'替換'm_dict [key] = increment'? – 2013-04-05 13:08:45
@JohnWillemse因爲在第一種情況下這仍然是三次查找。一個用於'ContainsKey'和兩個用於'+ =',我猜。 – LumpN 2013-04-08 08:42:58