从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基本上是重复的查找功能,在这种情况下,这是大部分计算。
添加回答
举报
0/150
提交
取消