Прежде всего, с помощью try catch
не является хорошей идеей здесь, вы излишне замедляя код, где вы можете легко выполнить, что с ContainsKey
или TryGetValue
Я бы предложил решение с TryGetValue
, как упомянуто здесь - https://msdn.microsoft.com/en-us/library/kw5aaea4(v=vs.110).aspx (проверьте примеры)
Но вы можете оптимизировать больше. Линия myInt = 0;
избыточна, как предположил @Mark. TyGetValue
автоматически ставит значение default
(0
за int
) когда он возвращается.
Если ключ не найден, то параметр значения получает соответствующее значение по умолчанию для типа TValue; например, 0 (ноль) для целых типов, false для типов Boolean и null для ссылочных типов. https://msdn.microsoft.com/en-us/library/bb347013%28v=vs.110%29.aspx
Таким образом, окончательный код может быть
int myInt;
if (_myDictionary.TryGetValue(key, out myInt))
{
[...] //codes that uses the value
}else{
[...] //codes that does not use the value
}
Или -
int myInt;
_myDictionary.TryGetValue(key, out myInt))
[...] //other codes.
Следующий пункт копируется из документации ВЗ TryGetValue -
Этот метод объединяет функциональность метода ContainsKey и свойства . Если ключ не найден, то параметр значения получает соответствующее значение по умолчанию для типа TValue; например, 0 (ноль) для целых типов, false для булевых типов и null для ссылочных типов. Используйте метод TryGetValue, если ваш код часто пытается получить доступ к ключам, которые не находятся в словаре. Использование этого метода более эффективно, чем улавливание KeyNotFoundException, вызванное по свойству Item. Этот метод приближается к операции O (1).
КСТАТИ, ContainsKey
и TryGetValue
и имеет время работы O (1). Таким образом, это не имеет большого значения, вы можете использовать любой.
'if (dict.ContainsValue (value))' или check key 'dict.ContainsKey (value)' – codingbiz