Я знаю, что это старая ветка, но в случае, если она полезна, предыдущие ответы хороши, но можно рассмотреть комментарии о сложности и проблемах с засорением кода (все это также актуально для меня).
Я использую пользовательский метод расширения, чтобы обернуть сложность вышеприведенных ответов в более элегантную форму, чтобы она не была засорена в коде, а затем обеспечивает отличную поддержку оператора null coalesce. , , и в то же время максимизировать производительность (через ответы выше).
namespace System.Collections.Generic.CustomExtensions
{
public static class DictionaryCustomExtensions
{
public static TValue GetValueSafely<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key)
{
TValue value = default(TValue);
dictionary.TryGetValue(key, out value);
return value;
}
}
}
Затем вы можете использовать его, просто импортировав пространство имен System.Collections.Generic.CustomExtensions
string value = dictionary.GetValueSafely(key) ?? "default";