我使用了GroupBy()
,并生成了IEnumerable<IGrouping<TKey,TValue>>
。
我可以遍历它,并将每个元素(每个IGrouping<TKey,TValue>
)传递到接受IEnumerable<TValue>
的方法
这并不奇怪——IGrouping<TKey,TValue>
实现了IEnumerable<TValue>
但是如果我定义了一个接受IEnumerable<IEnumerable<B>>
的方法,那么我就不能直接传递GroupBy()
的输出,即使它是IEnumerable<>
并且它里面的每个元素都是IEnumerable<B>
为什么?
正如几个人指出的那样(事实上,正如我在脑海中所知道的那样),这只是一个协方差问题,并且只在pre-中中断。