Из записи MSDN на Dictionary.TryGetValue Method:
Этот метод объединяет функциональность метода ContainsKey и свойство Item.
Если ключ не найден, то параметр значения получает соответствующий значение по умолчанию для типа значения TValue; например, 0 (ноль) для целочисленные типы, false для типов Boolean и null для ссылочных типов.
Используйте метод TryGetValue, если ваш код часто пытается получить доступ ключи, которые не находятся в словаре. Использование этого метода больше эффективнее, чем поймать исключение 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);
Примечание. Я не ищу тест!