C# 为什么我不能返回列表<;进入>;返回类型为IEnumerable时<;IEntry>;?

C# 为什么我不能返回列表<;进入>;返回类型为IEnumerable时<;IEntry>;?,c#,generics,C#,Generics,我有: 为什么我不能这样做 interface IEntry {} class Entry : IEntry {} IEnumerable func() { 返回新列表(); } 返回的对象不满足所有类型要求吗?我相信这只在.net 4中可用 在早期版本中,您可以: IEnumerable<IEntry> func() { return new List<Entry>(); } 使用System.Linq; IEnumerable func() { 返回新

我有:

为什么我不能这样做

interface IEntry {}

class Entry : IEntry {}
IEnumerable func()
{
返回新列表();
}

返回的对象不满足所有类型要求吗?

我相信这只在.net 4中可用

在早期版本中,您可以:

IEnumerable<IEntry> func()
{
    return new List<Entry>();
}
使用System.Linq;
IEnumerable func()
{
返回新列表().Cast();
}

我相信这只在.net 4中提供

在早期版本中,您可以:

IEnumerable<IEntry> func()
{
    return new List<Entry>();
}
使用System.Linq;
IEnumerable func()
{
返回新列表().Cast();
}
C#(和.Net)4.0引入了泛型类型参数(包括)的概念,这允许编译器隐式转换如下语句

定义自己的泛型类型时,可以分别使用和关键字将类型声明为协变或逆变。

C#(和.Net)4.0引入了泛型类型参数(包括)的概念,这允许编译器隐式转换这样的语句


定义自己的泛型类型时,可以分别使用和关键字将类型声明为协变或逆变。

您所说的.NET版本是4.0之前的版本还是否?检查您使用的.NET版本是4.0之前的版本还是否?检查