如果在字典中找不到我指定的键,我希望能够指定要返回的默认值。
例如
int default = 5;
string key = "MyKey";
int foo = myDictionary.GetValue(key, default);
if key
is inmyDictionary
foo
应该保存字典中的值,否则它将保存5
.
如果在字典中找不到我指定的键,我希望能够指定要返回的默认值。
例如
int default = 5;
string key = "MyKey";
int foo = myDictionary.GetValue(key, default);
if key
is inmyDictionary
foo
应该保存字典中的值,否则它将保存5
.
我在这里找到了一段代码,它通过向 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;
}
}
}
最好的方法是使用 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。