是否有一个IDictionary实现,在缺少键的情况下返回默认值而不是抛出异常?
如果缺少键,则字典中的索引器将引发异常。是否有IDictionary的实现将返回default(T)的实现?
我知道“ TryGetValue”方法,但是不能与linq一起使用。
这会有效地满足我的需求吗:
myDict.FirstOrDefault(a => a.Key == someKeyKalue);
我认为它不会像我想的那样会迭代键,而不是使用哈希查找。
回答:
确实,那根本不会有效。
您总是可以编写扩展方法:
public static TValue GetValueOrDefault<TKey,TValue> (this IDictionary<TKey, TValue> dictionary, TKey key)
{
TValue ret;
// Ignore return value
dictionary.TryGetValue(key, out ret);
return ret;
}
或使用C#7.1:
public static TValue GetValueOrDefault<TKey,TValue> (this IDictionary<TKey, TValue> dictionary, TKey key) =>
dictionary.TryGetValue(key, out var ret) ? ret : default;
使用:
- 表示形式的方法(C#6)
- 输出变量(C#7.0)
- 默认文字(C#7.1)
以上是 是否有一个IDictionary实现,在缺少键的情况下返回默认值而不是抛出异常? 的全部内容, 来源链接: utcz.com/qa/407904.html