【发布时间】:2016-07-21 14:04:51
【问题描述】:
在earlier question about generic variance 中,我被告知IEnumerable<T> 的成员可以修改。如何做到这一点,并且看到当可以修改协变类型时会出现方差冲突,那么IEnumerable<T> 如何与T 保持协变?
【问题讨论】:
-
我认为您对“成员”和“修改”的含义有些混淆。你能举个例子吗?
-
@ScottHannen 我认为在原始问题中缩短评论讨论并提出新问题而不是澄清是正确的网站礼仪,希望会有一个普遍且非平凡的解释。即我问这个部分是因为我不知道原始评论者指的是什么。
-
哦,实际上,我现在注意到他说“
IEnumerable<T>的实现”,这强烈暗示 某些子类 不是在T上协变的,例如List<T>,其类型可以在类之外修改。这对于原始问题更有意义,但我仍然不能完全确定这是正确的。 -
@concat 创建一个新问题,而不是在 cmets 中讨论它是可以的,但您仍然需要提供足够的信息在这个问题中才能回答它。跨度>
-
上下文让我产生疑问:修改
IEnumerable<T>的成员?你不能。这是一个框架接口。 OP 所说的“成员”是指集合中的项目,还是集合中项目的属性?同样,通过“修改” - 是指设置属性项还是更改IEnumerable引用的引用?
标签: c# collections covariance