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

tpa*_*ale 2 .net c#

如果字符串键尚未使用,我将生成数以万计的<string,double>对并将每个对存储在.NET Dictionary中.

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

    try { Dict.Add(key, val); }  catch (ArgumentException) {} //blind attempt
Run Code Online (Sandbox Code Playgroud)

或这个 ?

    if (!Dict.ContainsKey(key)) { Dict.Add(key, val); }       //smart attempt
Run Code Online (Sandbox Code Playgroud)

盲目尝试触发了双键上的异常; 智能尝试两次点击Dictionary索引 - 一次检查,然后再次添加.(在我的特定情况下,大约10%的时间都有双键.)

有人知道一种方法应该优先于另一种吗?

Ada*_*ear 5

一般的例外情况很昂贵:

当成员抛出异常时,其性能可能会慢几个数量级.

也就是说,正如安德鲁巴伯所指出的那样,这取决于"千万万亿"是什么以及你预计碰撞发生的频率.

虽然你必须衡量你的表现以确定,但我个人可能会去检查等待例外情况,特别是如果你实际上没有任何事情来处理异常而只是计划吞下它.