0

如果在字典中找不到我指定的键,我希望能够指定要返回的默认值。

例如

int default = 5;
string key = "MyKey";
int foo = myDictionary.GetValue(key, default);

if keyis inmyDictionary foo应该保存字典中的值,否则它将保存5.

4

2 回答 2

3

我在这里找到了一段代码,它通过向 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;
        }
    }
}
于 2009-01-28T19:53:56.043 回答
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。

于 2009-01-28T20:29:20.293 回答