Просто используйте TryGetValue
.
int i;
results.TryGetValue(3, out i);
Если он найдет, i
будет установлено в значение.Если нет, то i
является значением по умолчанию, которое будет равно нулю для int.
Если вам нужно другое значение помимо значения по умолчанию, вы можете сделать это:
int i;
if (!results.TryGetValue(3, out i))
{
i = 5; // or whatever other value you want;
}
И если вы, как я, ненавидя стиль параметра out
, вы можете создать метод расширения
public static class IDictionaryExtensions
{
public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key)
{
T i;
dictionary.TryGetValue(key, out i);
return i;
}
}
, а затем вы можете вызвать:
int i = dictionary.GetValueOrDefault(3);
, и если вы хотите стать более любопытным, вы можете создать еще одинoveload расширения:
public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue defaultValue)
{
T i;
return dictionary.TryGetValue(key, out i) ? i : defaultValue;
}
, которое можно назвать
int i = dictionary.GetValueOrDefault(3, 5);