我有一段代表字典和搜索键数组的代码。
Dictionary<string, string> items = new Dictionary<string, string>()
{
{"1","Blue"},
{"2","Green"},
{"3","White"}
};
string[] keys = new[] { "1", "2", "3", "4" };
当我传递字典中不存在的密钥时,如何安全地避免运行时错误?
答案 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)
使用ContainsKey
或TryGetValue
检查是否存在密钥。
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。