从MSDN上的Dictionary.TryGetValue方法入口:
此方法结合了ContainsKey方法和Item属性的功能.
如果未找到密钥,则value参数将获取值类型TValue的相应默认值; 例如,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);
}
Run Code Online (Sandbox Code Playgroud)
要么
Dictionary<int,int> dict;
//...//
int ival;
dict.TryGetValue(ikey, out ival);
Run Code Online (Sandbox Code Playgroud)
注意:我不是在寻找基准!