在another SO question,中,我看到一些人推荐我始终使用TryGetValue。
尽管我总是在Contains?/Access模式上使用TryGetValue,但是当我希望键始终在字典中时,我会故意避免使用此模式。然后我进行直接索引器访问,以便如果键不存在则引发异常,因为确实发生了意外情况(即我期望键不在字典中)。
由于似乎人们普遍反对我的“最佳实践”(我提到的帖子中有3人中的3个人明确建议始终使用TryGetValue),因此,我渴望阅读有关该主题的扩展讨论。 。
最佳答案
不,您是完全正确的IMO。
这样做毫无意义:
if (dict.TryGetValue(key, out value))
{
// whatever
}
else
{
throw new SomeException("key '" + key + "' wasn't in dictionary");
}
唯一的好处是:
value = dict[key];
是您得到了更明确的异常消息……但以牺牲可读性为代价,IMO。
这就像强制转换与使用
as
一样-当状态为“错误”时,异常是正确的结果,因此请使用给出该行为的格式。
关于.net - 我是否应该始终使用TryGetValue访问.net词典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887097/