我有:
interface IEntry {}
class Entry : IEntry {}
为什么我不能这样做?
IEnumerable<IEntry> func()
{
return new List<Entry>();
}
返回的对象不满足所有类型要求吗?
答案 0 :(得分:4)
我认为这只适用于.net 4
在早期版本中,您可以:
using System.Linq;
IEnumerable<IEntry> func()
{
return new List<Entry>().Cast<IEntry>();
}
答案 1 :(得分:1)
C#(和.Net)4.0在泛型类型参数(包括covariance and contravariance)中引入了IEnumerable
的概念,它允许编译器隐式转换这样的语句。