我想使用一些简短的语法来做类似的事情:
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 :(得分:9)
Item
{{1}}属性:
如果找不到指定的键,则get操作会抛出KeyNotFoundException,而set操作会创建一个具有指定键的新元素。
存在紧凑的语法
答案 1 :(得分:3)
p["a"] = "2";
相当于
if (!p.ContainsKey("a"))
p.Add("a", "2");
else
p["a"] = "2";
事实上,第一个应该是首选,因为它执行得更快。
答案 2 :(得分: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");
它保持当前值(如果存在),但如果是新的则添加它。
答案 3 :(得分:0)
您可以使用ContainsKey字典方法检查特定键是否包含字典。
E.g。
if (!p.ContainsKey("a"))
{
p.Add("a","2");
}
else
{
p["a"] = "2";
}