System.Linq.ILookUp定义读取
interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, IEnumerable {
int Count {
get;
}
IEnumerable<TElement> this[TKey key] {
get;
}
bool Contains(TKey key);
}
Run Code Online (Sandbox Code Playgroud)
由于IEnumerable在IGrouping <TKey,TElement>中是协变的,因此IGrouping <TKey,TElement>在TElement中是协变的,并且接口仅将TElement作为返回类型公开,我认为ILookup在TElement中也是协变的.的确,定义
interface IMyLookup<TKey, out TElement> : IEnumerable<IGrouping<TKey, TElement>>, IEnumerable {
int Count {
get;
}
IEnumerable<TElement> this[TKey key] {
get;
}
bool Contains(TKey key);
}
Run Code Online (Sandbox Code Playgroud)
编译没有问题.
那么,原始定义中缺少out关键字的原因可能是什么?可能会添加Linq的未来版本吗?