2.0中的定义:
public
interface IEnumerable<T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
{
IEnumerator<T> GetEnumerator();
}
4.0中的定义:
public
interface IEnumerable<
out T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
{
IEnumerator<T> GetEnumerator();
}
可以看到4.0中增加了对协变的支持。
可以在两个版本试下, 下面的语句在2.0下会报错。
List<SubClass> subarr =
new List<SubClass>();
IEnumerable<IParent> parentarr = subarr;
IEnumerable<IParent> parentarr = subarr;