为什么IEnumerable的通用参数是协变的,而IList不是?

时间:2017-12-20 14:46:21

标签: c# generics generic-collections

为什么IEnumerable的通用参数是协变的,而IList不是?所以,鉴于此:

class base1 {}
class derived : base1 {}

var list1 = new List<derived>();

我可以这样做:

IEnumerable<base1> list3 = list1;

但不能这样做:

IList<base1> list2 = list1;

我只是想知道为什么IList的限制是从IEnumerable派生的,这是协变的

0 个答案:

没有答案