紧凑的字典键查找

时间:2012-07-08 12:39:16

标签: c#

有没有办法把它写得更紧凑?

return _searchRedirectionMap.ContainsKey(query) ? _searchRedirectionMap[query] : "";

鉴于_searchRedirectionMap被定义为IDictionary<string,string>

2 个答案:

答案 0 :(得分:6)

您可以在IDictionary上使用TryGetValue方法编写扩展方法:

public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> source, TKey key, TValue defaultValue)
{
    TValue outValue;
    if (source.TryGetValue(key, outValue))
    {
        return outValue;
    }

    return defaultValue;
}

然后你可以像这样使用它:

return _searchRedirectionMap.GetValueOrDefault(query, string.Empty);

答案 1 :(得分:0)

您可以使用TryGetValue方法,但它会为string类型返回null:

_searchRedirectionMap.TryGetValue(key, out value);

文档:MSDN