当前位置:  开发笔记 > 编程语言 > 正文

C#字典<>缺少密钥

如何解决《C#字典<>缺少密钥》经验,为你挑选了2个好方法。

当我做val = dict ["不存在的密钥"]时,我得到System.Collections.Generic.KeyNotFoundException有没有办法让我的字典调用成员函数,并将密钥作为生成值的参数?

-edit-也许我应该更具体一点.我想AUTOMATICALLY调用一个成员函数来做它需要的东西,为那个键创建正确的值.在这种情况下,它在我的数据库中创建一个条目然后给我回到它的独特句柄.我将在下面发布我的解决方案.



1> Mehrdad Afsh..:

使用扩展方法:

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);



2> Akash Kava..:
Object value;
if(dict.TryGetValue("nonexistent key", out value))
{
    // this only works when key is found..
}
// no exception is thrown here..

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有