我是否应该检查字典中是否存在特定键如果我确定它会在我到达访问它的代码时添加到字典中?
有两种方法可以访问字典中的值
- 检查 ContainsKey 方法。如果它返回 true,那么我将使用字典对象的索引器 [key] 进行访问。
或
- TryGetValue 将返回 true 或 false 以及通过 out 参数返回值。
(如果我想获得值(value),第二个将比第一个表现更好。Benchmark。)
但是,如果我确定访问全局字典的函数肯定有 key ,那么我是否仍应使用 TryGetValue 检查或不检查我应该使用 indexer[]。
或者我永远不应该假设并始终检查?
最佳答案
如果键应该存在,则使用索引器 - 如果它不存在,它将抛出一个适当的异常,如果键的缺失表明存在错误,这是正确的行为。
如果 key 不存在是有效的,请改用 TryGetValue
并做出相应的 react 。
(也应用 Marc 关于安全访问共享字典的建议。)
关于c# - 我应该在访问字典之前检查特定键是否存在于字典中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157955/