2014-02-21 65 views
0

我想用一些簡短的語法做同樣的事情:詞典:心煩樣使用[緊湊語法]

var p = new Dictionary<string, string>(); 
p["a"] = "2"; 
p["a"] = "3"; 

,而不是我要做的:

if (p.ContainsKey("a")) 
    p["a"] = "2"; 
else 
    p.Add("a", "2"); 

if (p.ContainsKey("a")) 
    p["a"] = "3"; 
else 
    p.Add("a", "3"); 

是否存在一個緊湊句法?

+0

你可以隨時創建方法 – wudzik

+5

你可以做你正在做的事...... p [「a」] =「2」;即使密鑰不存在,也是有效的 –

+0

@elmugrat:對不起,你是對的。你能回答而不是評論嗎?我會接受它。問題在於我沒有將字典混淆。 – Revious

回答

3
p["a"] = "2"; 

相當於

if (!p.ContainsKey("a")) 
    p.Add("a", "2"); 
else 
    p["a"] = "2"; 

第一個實際上應該較受歡迎,因爲它是更快地執行。

0

您可以使用ContainsKey字典方法來檢查特定的密鑰是否包含字典。

E.g.

if (!p.ContainsKey("a")) 
{ 
p.Add("a","2"); 
} 
else 
{ 
p["a"] = "2"; 
} 
9

MSDNItem屬性:

如果沒有找到指定的鍵,get操作拋出一個KeyNotFoundException,和一組操作創建一個具有指定鍵的新元素。

如此緊湊語法存在

1

我有這樣的擴展方法:

public static void AddOrKeep<K, V>(this IDictionary<K, V> dictionary, K key, V val) 
{ 
    if (!dictionary.ContainsKey(key)) 
    { 
     dictionary.Add(key, val); 
    } 
} 

使用方法如下:

dict.AddOrKeep("a", "2"); 

它保持當前值,如果存在,但增加了它如果新的。