Assume I have interface and class:
public interface ITree {}
public class Tree : ITree {}
As IEnumerable<T>
is covariant, the code line below is compiled successfully:
IEnumerable<ITree> trees = new List<Tree>();
But when I put it into generic method:
public void Do<T>() where T : ITree
{
IEnumerable<ITree> trees = new List<T>();
}
I get compiled error from compiler:
Error 1 Cannot implicitly convert type 'System.Collections.Generic.List' to 'System.Collections.Generic.IEnumerable'. An explicit conversion exists (are you missing a cast?) D:labLab.GeneralLab.GeneralProgram.cs 83 40 Lab.General
Why covariance does not work in this case?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…