为了账号安全,请及时绑定邮箱和手机立即绑定

有什么更有效的方法:Dictionary TryGetValue或ContainsKey

有什么更有效的方法:Dictionary TryGetValue或ContainsKey

慕后森 2019-11-11 12:54:42
从MSDN在Dictionary.TryGetValue方法上的条目:此方法结合了ContainsKey方法和Item属性的功能。如果找不到键,则value参数将为值类型TValue获取适当的默认值;否则,值为0。例如,对于整数类型,0(零),对于布尔类型,false(假),对于引用类型,null。如果您的代码经常尝试访问不在字典中的键,请使用TryGetValue方法。使用此方法比捕获Item属性引发的KeyNotFoundException更有效。此方法接近O(1)操作。从描述中,尚不清楚它是否比调用ContainsKey然后进行查找更有效或更方便。TryGetValue只是先调用ContainsKey然后再实现Item 的实现,还是实际上比通过一次查找更有效?换句话说,什么是更有效的(即哪个执行的查询更少):Dictionary<int,int> dict;//...//int ival;if(dict.ContainsKey(ikey)){  ival = dict[ikey];}else{  ival = default(int);}要么Dictionary<int,int> dict;//...//int ival;dict.TryGetValue(ikey, out ival);注意:我不是在寻找基准!
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

TryGetValue 会更快。


ContainsKey使用与相同的检查TryGetValue,该检查内部引用实际的输入位置。该Item属性实际上具有与几乎相同的代码功能TryGetValue,除了它将引发异常而不返回false。


使用,ContainsKey后跟Item基本上是重复的查找功能,在这种情况下,这是大部分计算。


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 1243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信