1
15
如何接近它取决于发生碰撞时您想做什么。如果要保留第一个插入的值,应使用
旁注:如果可能的话,我可能会使用
|
2
7
我要开包含支票。 我的理由是应该为那些不应该发生的事情保留例外。如果他们这样做了,警铃应该响了,小牛场也应该进来。对于我来说,将异常用于已知问题案例处理似乎很奇怪,尤其是当您可以测试它时。 |
3
5
如果可能,更换
|
4
4
我做了一些基准测试。但我必须重申凯尔西的观点:
这是有意义的,因为你通过追求获得的绩效
无重复:
50%重复:
100%重复
结果 :
你可以看到,随着重复次数的增加,
|
5
2
除非这是一个非常大的字典,或者在一个关键的内部代码循环中,否则您可能看不到区别。 .containsKey检查每次都会花费您一点性能,而抛出的异常很少会花费您一点性能。如果复制的可能性确实很低,则允许例外。 如果您确实希望能够管理重复的密钥,那么您可以在 PowerCollections |
6
1
可以使用addorupdate()方法扩展字典: http://williablog.net/williablog/post/2011/08/30/Generic-AddOrUpdate-Extension-for-IDictionary.aspx |
7
0
有两种方法来看待这个… 性能如果从性能角度来看,则必须考虑:
我想不出比抛出异常更昂贵的哈希计算。记住,当抛出异常时,它们已经跨Interop封送到win32 api,被创建,对整个堆栈跟踪进行爬网,并停止并处理遇到的任何catch块。在clr中引发的异常仍然被视为由win32 api在封面下处理的结果。从 Chris Brumme's blog 以下内容:
履行义务:避免例外 最佳实践.NET框架设计指导方针是一个很好的规则集,可以遵循(很少有例外情况-有意使用双关语)。 Design Guidelines Update: Exception Throwing . 指南中提到了一种称为“尝试/实干者”的模式,在这种情况下,建议避免例外:
异常也不应该被用作控制流机制——这也是在clr设计指南中写的。 最佳实践结论:避免例外 |
8
-1
我尽量避免在任何地方出现异常——它们处理起来都很昂贵,而且会使代码复杂化。既然你知道有可能发生碰撞,那么做这个很简单。包含检查,我会这样做的。 |
eymentakak · json字典类型错误:字符串索引必须是整数 2 年前 |
Rohan Mittal · 按dict值对dict排序 2 年前 |
mars · 将值作为元组对字典进行排序 2 年前 |
Sher Meen · 我需要列出一个循环中临时变量中存储的多个值 2 年前 |
Shubh · 如何将字典行附加到空数据帧中? 2 年前 |
kms · 从pandas中的字典中读取数据并指定新的列值 2 年前 |
Alex · 如何向嵌套字典json添加值? 2 年前 |