的情况下,才会发生您提到的此类违规行为
在前面关于一般方差的问题中,我被告知可以修改IEnumerable<T>
的成员。如何做到这一点?鉴于当协变类型可以修改时会出现方差冲突,那么IEnumerable<T>
如何在T
上协变?
您必须区分修改序列和修改序列元素
您可以毫无问题地修改元素,因为您不能通过使用对象上的属性和函数来修改对象的类型
因此,这一切都很好,因为IEnumerable<T>
中的所有元素要么是T
,要么是从T
派生的类型。
例如,只有在IEnumerable<Derived>
中存在Base
类型的对象