假设我有接口和类:
public interface ITree {}
public class Tree : ITree {}
与covariantIEnumerable<T>
一样,下面的代码行编译成功:
IEnumerable<ITree> trees = new List<Tree>();
但是当我把它放到通用方法中时:
public void Do<T>() where T : ITree
{
IEnumerable<ITree> trees = new List<T>();
}
我从编译器得到编译错误:
错误 1 无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.IEnumerable”。存在显式转换(您是否缺少演员表?) D:\lab\Lab.General\Lab.General\Program.cs 83 40 Lab.General
为什么协方差在这种情况下不起作用?