c# - 有效地添加到 C# .NET 字典

标签 c# .net

我正在生成数以亿计的 对,如果字符串键尚未使用,则将每一对存储在 .NET 字典中。

效率方面,这样做更好吗?

    try { Dict.Add(key, val); }  catch (ArgumentException) {} //blind attempt

还是这个?

    if (!Dict.ContainsKey(key)) { Dict.Add(key, val); }       //smart attempt

盲目尝试触发双键异常;聪明的尝试点击字典索引两次 - 一次检查,然后再次添加。 (在我的特殊情况下,大约有 10% 的时间有重复 key 。)

有谁知道是否应该优先使用一种方法而不是另一种方法?

最佳答案

一般异常 are costly :

When a member throws an exception, its performance can be orders of magnitude slower.

也就是说,正如安德鲁·巴伯 (Andrew Barber) 指出的那样,这取决于“无数”是什么以及您预计碰撞发生的频率。

虽然您必须衡量自己的表现才能确定,但​​我个人可能会去检查等待异常,特别是如果您实际上没有任何事情来处理异常,正打算吞下它。

关于c# - 有效地添加到 C# .NET 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304508/

相关文章:

c# - 将文件拖放到文本框中

c# - 无法在 COM 可见类库 C# 中加载文件或程序集

.net - 从不是在其上创建线程的线程访问的控件

c# - 读取命令行开关

c# - 从 HttpClient 的 FormUrlEncodedContent 中提取内容数据

c# - 将 ObservableCollection 绑定(bind)为不同 CollectionViewSource 的源

c# - 如何从 C# web 服务生成 WSDL 文件

c# - C# 中的列表和列表的值

c# - 替换作为属性/公共(public)字段检索的对象列表中的元素

c# - IQbservable 示例