TryGetValue
是 C# 中的一个非常有用的方法,用于在字典(Dictionary)或哈希表(Hashtable)中尝试获取一个键(key)对应的值(value)。如果键存在,则返回该值;否则返回默认值。
虽然 TryGetValue
已经非常简洁和高效,但你仍然可以通过扩展方法(extension method)来为其添加一些额外的功能,使其更加灵活和易用。以下是一个简单的示例:
public static class DictionaryExtensions
{
public static bool TryGetValue<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, out TValue value)
{
return dictionary.TryGetValue(key, out value);
}
public static bool TryGetValue<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue defaultValue, out TValue value)
{
return dictionary.TryGetValue(key, out value) ? value : defaultValue;
}
}
这两个扩展方法分别与原始的 TryGetValue
方法具有相同的功能,但第二个方法允许你指定一个默认值,当指定的键不存在时返回该默认值。这使得代码更具可读性,因为你可以清楚地看到哪个值是预期的默认值。
要使用这些扩展方法,只需将它们添加到你的项目中,并在需要的地方调用它们,如下所示:
var dictionary = new Dictionary<string, int>
{
{ "apple", 1 },
{ "banana", 2 },
{ "orange", 3 }
};
int value;
// 使用原始 TryGetValue 方法
bool result1 = dictionary.TryGetValue("apple", out value); // true
result1 = dictionary.TryGetValue("grape", out value); // false
// 使用扩展方法
bool result2 = dictionary.TryGetValue("apple", out value); // true
result2 = dictionary.TryGetValue("grape", out value); // false
bool result3 = dictionary.TryGetValue("grape", 0, out value); // true,返回默认值 0