如果缺少键,则字典中的索引器将引发异常。是否有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;
使用: