del*_*ber 111 c# dictionary
我尝试检查null但编译器警告这种情况永远不会发生.我应该寻找什么?
Jon*_*eet 179
假设你想,如果键获得值不存在,请使用Dictionary<TKey, TValue>.TryGetValue:
int value;
if (dictionary.TryGetValue(key, out value))
{
// Key was in dictionary; "value" contains corresponding value
}
else
{
// Key wasn't in dictionary; "value" is now 0
}
Run Code Online (Sandbox Code Playgroud)
(使用ContainsKey然后索引器使它看起来两次键,这是毫无意义的.)
请注意,即使你是使用引用类型,检查空行不通-索引的Dictionary<,>,如果你请求缺少键将抛出一个异常,而不是返回null.(这Dictionary<,>和之间有很大的不同Hashtable.)
ant*_*tik 23
如果字典KeyNotFound不包含您的密钥,则Dictionary会抛出异常.
如建议的那样,ContainsKey是适当的预防措施. TryGetValue也很有效.
这允许字典更有效地存储null值.如果没有它以这种方式运行,则从[]运算符检查空结果将指示空值或输入键的不存在,这是不好的.
Chr*_*isF 10
如果您在尝试添加新值之前只是检查,请使用以下ContainsKey方法:
if (!openWith.ContainsKey("ht"))
{
openWith.Add("ht", "hypertrm.exe");
}
Run Code Online (Sandbox Code Playgroud)
如果您正在检查该值是否存在,请使用TryGetValueJon Skeet的答案中描述的方法.