我正在将一些数据解析为字典。有些键可能会重复并且应该覆盖现有数据,因此我必须检查字典是否包含密钥,但后来我明白了这一点:
而不是
If Dict.ContainsKey(key) Then
Dict(key) = val
Else
Dict.Add(key, val)
End If
我用过这个
Try
Dict(key) = val
Catch ex As Exception
Dict.Add(key, val)
End Try
我做了一些基准测试,在一个大小为1k的字典中添加了0到1k范围内的100k随机密钥。在发布版本模式下,使用try / catch块的版本似乎总是快40%。
现在从我对Dictionary对象的理解,它不仅仅是一个哈希表,因为纯哈希表不知道使用了什么键,因为我只需要哈希表功能,传递这个人为约束似乎对我没有害处。
让我感到困扰的是使用try块来实现这一点,是不是应该为程序流中的实际异常保留呢?
答案 0 :(得分:3)
全部取决于重复键的数量。如果没有,则不执行catch。
但你不需要检查它。如果您使用:
Dict(key) = val
它会添加新密钥或覆盖现有密钥。
https://msdn.microsoft.com/en-us/library/9tee9ht2(v=vs.110).aspx