在另一个SO问题中,我看到有几个人建议我总是使用TryGetValue.
虽然我总是在Contains?/ Access模式上使用TryGetValue,但是当我希望密钥始终在字典中时,我会故意避免使用此模式.然后我去寻找直接的索引器,这样如果没有键就会引发异常,因为真正意外发生了一些事情(即在我期望的时候键不在字典中).
由于似乎已经对我的"最佳实践"达成了普遍共识(我提到明确建议在任何时候使用TryGetValue的帖子中有4人中有3人),我渴望阅读有关该主题的扩展讨论. .
Jon*_*eet 13
不,你是完全正确的IMO.
这样做没有意义:
if (dict.TryGetValue(key, out value))
{
// whatever
}
else
{
throw new SomeException("key '" + key + "' wasn't in dictionary");
}
Run Code Online (Sandbox Code Playgroud)
唯一的好处是:
value = dict[key];
Run Code Online (Sandbox Code Playgroud)
是你得到一个更明确的异常消息......但以可读性为代价,IMO.
这就像施法与使用as- 当状态是"错误"时,例外是正确的结果,所以使用给出该行为的形式.