如何修改IEnumerable <t>的成员?

时间:2016-07-21 14:04:51

标签: c# collections covariance

earlier question about generic variance中,我被告知可以修改IEnumerable<T>的成员。如何做到这一点,并且当可以修改协变类型时出现方差违规,那么IEnumerable<T> T如何$posts= Post->orderBy('id', 'desc') ->distinct() ->paginate(3); 可以协变?

1 个答案:

答案 0 :(得分:5)

你必须区分修改序列和修改它的元素。

您可以毫无问题地修改元素,因为您无法通过使用属性和函数来修改对象的类型。

因此,这一切都很好,因为IEnumerable<T>中的所有元素都是T或从T派生的类型。

您提到的此类违规行为只有在您可以拥有Base

内的IEnumerable<Derived>类型的对象时才会发生