Если вы хотите получить значение, если ключ существует , используйте Dictionary<TKey, TValue>.TryGetValue
:
int value;
if (dictionary.TryGetValue(key, out value))
{
// Key was in dictionary; "value" contains corresponding value
}
else
{
// Key wasn't in dictionary; "value" is now 0
}
(Использование ContainsKey
, а затем индексатор заставляет его искать ключ дважды, что довольно бессмысленно.)
Обратите внимание, что даже если вы использовали с использованием ссылочных типов, проверка на нулевое значение не сработала - индексатор для Dictionary<,>
сгенерирует исключение, если вы запросите отсутствующий ключ, вместо того, чтобы вернуть нулевое значение. (Это большая разница между Dictionary<,>
и Hashtable
.)