如果在字典中找不到我指定的密钥,我希望能够指定一个默认值。
e.g。
int default = 5;
string key = "MyKey";
int foo = myDictionary.GetValue(key, default);
如果key
myDictionary
中的foo
应该保留字典中的值,否则它将保留5
。
答案 0 :(得分:3)
我找到了一段代码here,可以通过向IDictionary添加扩展方法来很好地完成工作:
using System.Collections.Generic;
namespace MyNamespace {
public static class DictionaryExtensions {
public static V GetValue<K, V>(this IDictionary<K, V> dict, K key) {
return dict.GetValue(key, default(V));
}
public static V GetValue<K, V>(this IDictionary<K, V> dict, K key, V defaultValue) {
V value;
return dict.TryGetValue(key, out value) ? value : defaultValue;
}
}
}
答案 1 :(得分:0)
最好的方法是使用TryGetValue,一种可行的方法是:
int default = 5;
string key = "MyKey";
int foo = 0;
defaultValue = 5;
(myDictionary.TryGetValue(key, out foo))?return foo: return defaultValue;
如果您尝试获取不存在的值,TryGetValue将返回false,这意味着您使用该子句的第二部分。
您也可以决定将foo设置为默认值,使用TryGetValue并在任何情况下返回foo。