IGrouping:为什么IGrouping继承像IEictionary一样的IEnumerable <KeyValuePair>?
public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>,
IEnumerable
的IDictionary:
public interface IDictionary<TKey, TValue> : ICollection<KeyValuePair<TKey, TValue>>,
IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable
所以,IDictionary
工具IEnumerable<KeyValuePair<TKey, TValue>>
而IGrouping
实现IEnumerable<TElement>
。如果IGrouping
的元素包含密钥,为什么界面不能使用KeyValuePair
?它也好像在IDictionary
实现的方法,将用于IGrouping
如IDictionary.ContainsKey
不可用在IGrouping
是有用的,这意味着任何试图找到一组键(O(1)时间)会看起来像:
List<int> myList = new List<int>{ 1, 2, 3, 1};
var grp = myList.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count());
if (grp.ContainsKey(someValue)){...}
我刚使用IGrouping
错?我错过了什么?