我想知道为什么以下代码无法编译,除了" Instance参数:无法转换为' System.Collections.Generic.IEnumerable< TImpl>'到' System.Collections.Generic.IEnumerable< TInterface>' ":
public static List<TInterface> Foo<TInterface, TImpl>(IEnumerable<TImpl> input)
where TImpl : TInterface
{
return input.ToList<TInterface>();
}
我知道我可以改为将返回行更改为input.Cast<TInterface>().ToList()
,但是想要理解为什么编写的代码不会编译。在我看来,好像编译器应该能够验证输入是否可以隐式地转换为 IEnumerable&lt; TInterface&gt; 。