使用字典时如何避免运行时错误

时间:2013-06-29 17:10:08

标签: c# dictionary

我有一段代表字典和搜索键数组的代码。

Dictionary<string, string> items = new Dictionary<string, string>()
                                   {
                                     {"1","Blue"},
                                     {"2","Green"},
                                     {"3","White"}
                                    };

string[] keys = new[] { "1", "2", "3", "4" };

当我传递字典中不存在的密钥时,如何安全地避免运行时错误?

2 个答案:

答案 0 :(得分:2)

  

当我传递字典中不存在的密钥时,如何安全地避免运行时错误?

您尚未展示目前正在尝试这样做的方式,但您可以使用Dictionary<,>.TryGetValue

foreach (string candidate in keys)
{
    string value;
    if (items.TryGetValue(candidate, out value))
    {
        Console.WriteLine("Key {0} had value {1}", candidate, value);
    }
    else
    {
        Console.WriteLine("No value for key {0}", candidate);
    }
}

答案 1 :(得分:2)

使用ContainsKeyTryGetValue检查是否存在密钥。

string val = string.Empty;
 foreach (var ky in keys)
 {

                if (items.TryGetValue(ky, out val))
                {
                    Console.WriteLine(val);
                }

     }

foreach (var ky in keys)
 {

   if (items.ContainsKey(ky))
    {
      Console.WriteLine(items[ky]);
    }
  }

虽然TryGetValue比ContainsKey更快,但是当你想从dictionary.i中提取值时,请使用它。如果你想检查是否存在密钥使用ContainsKey。