当我做val = dict ["不存在的密钥"]时,我得到System.Collections.Generic.KeyNotFoundException有没有办法让我的字典调用成员函数,并将密钥作为生成值的参数?
-edit-也许我应该更具体一点.我想AUTOMATICALLY调用一个成员函数来做它需要的东西,为那个键创建正确的值.在这种情况下,它在我的数据库中创建一个条目然后给我回到它的独特句柄.我将在下面发布我的解决方案.
使用扩展方法:
static class DictionaryExtensions { public static TValue GetValueOrDefault(this Dictionary dic, TKey key, Func valueGenerator) { TValue val; if (dic.TryGetValue(key, out val)) return val; return valueGenerator(key); } }
你可以用以下方式调用它:
dic.GetValueOrDefault("nonexistent key", key => "null");
或传递成员函数:
dic.GetValueOrDefault("nonexistent key", MyMemberFunction);
Object value; if(dict.TryGetValue("nonexistent key", out value)) { // this only works when key is found.. } // no exception is thrown here..