c# - 我应该在访问字典之前检查特定键是否存在于字典中吗?

标签 c# .net dictionary

我是否应该检查字典中是否存在特定键如果我确定它会在我到达访问它的代码时添加到字典中?

有两种方法可以访问字典中的值

  1. 检查 ContainsKey 方法。如果它返回 true,那么我将使用字典对象的索引器 [key] 进行访问。

  1. TryGetValue 将返回 true 或 false 以及通过 out 参数返回值。

(如果我想获得值(value),第二个将比第一个表现更好。Benchmark。)

但是,如果我确定访问全局字典的函数肯定有 key ,那么我是否仍应使用 TryGetValue 检查或不检查我应该使用 indexer[]。

或者我永远不应该假设并始终检查?

最佳答案

如果键应该存在,则使用索引器 - 如果它不存在,它将抛出一个适当的异常,如果键的缺失表明存在错误,这是正确的行为。

如果 key 不存在是有效的,请改用 TryGetValue 并做出相应的 react 。

(也应用 Marc 关于安全访问共享字典的建议。)

关于c# - 我应该在访问字典之前检查特定键是否存在于字典中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157955/

相关文章:

c# - 如何在 WPF 中动态添加多个内容到扩展器

c# - LINQ 中的嵌套通用 Lambda

c# - 有没有比Environment.StackTrace更简洁的方法来获取调用堆栈信息?

c++ - 错误: invalid user defined conversion from char to const key_type&

c# - 使用 JSON.net 序列化时忽略接口(interface)中定义的属性

c# - 在 Razor 中向 URL.Action 添加参数

C# 小型数据库项目与 sql server ce

c# - 如何根据正则表达式分割字符串?

python - 在 Python 中优先使用字典而不是对象

c# - List<T> 动态拼接