为什么我不能将 IEnumerable<IGrouping<A,B>> 作为 IEnumerable<IEnumerable<B>>



我使用了GroupBy(),并生成了IEnumerable<IGrouping<TKey,TValue>>

我可以遍历它,并将每个元素(每个IGrouping<TKey,TValue>)传递到接受IEnumerable<TValue>的方法

这并不奇怪——IGrouping<TKey,TValue>实现了IEnumerable<TValue>

但是如果我定义了一个接受IEnumerable<IEnumerable<B>>的方法,那么我就不能直接传递GroupBy()的输出,即使它是IEnumerable<>并且它里面的每个元素都是IEnumerable<B>

为什么?

正如几个人指出的那样(事实上,正如我在脑海中所知道的那样),这只是一个协方差问题,并且只在pre-中中断。

最新更新