从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);
注意:我不是在寻找基准!
白板的微信