.net - 我是否应该始终使用TryGetValue访问.net词典?

标签 .net exception

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/

相关文章:

.net - 改进翻译人员和开发人员的工作流程

c# - 检索进程描述信息

.net - 测试IEnumerable <T>是否包含1个元素而不进行计数或不使用Single

c# - 为什么当值类型是引用类型的属性时,它的行为就像引用类型?

c++ - 使用普通异常类有什么意义?

java - 以编程方式导航到 JSF 2.0 中的错误页面

java - 返回 null 或再次抛出异常

c# - 我可以指定一个 dll 以在 Powershell 中使用 New-Object 吗?

c# - 我想制作一个简单的程序来防止文本框将重复数据输入 DataGridView

Android 不支持的操作异常 : Can't convert to color: type=0x2