当我执行val = dict [“不存在的密钥”]时,我得到System.Collections.Generic.KeyNotFoundException
有没有办法让我的字典以键作为参数来调用成员函数以生成值?

-编辑-
也许我应该更具体一些。我想自动调用成员函数以执行其需要的操作,从而为该键创建适当的值。在这种情况下,它将在我的数据库中创建一个条目,然后将其唯一的句柄还给我。我将在下面发布我的解决方案。

最佳答案

使用扩展方法:

static class DictionaryExtensions {
   public static TValue GetValueOrDefault<TKey, TValue>(this Dictionary<TKey,TValue> dic, TKey key, Func<TKey, TValue> 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);

关于c# - C#字典<>缺少键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/718610/

10-11 20:43