IEnumerable 是如何实现的?逆变?
这篇文章(http://blogs.msdn.com/b/brada/archive/2005/01/18/355755.aspx) 表示 IEnumerable
是 Contra-变体。然而类型 T 是协变的,因为它是一个 out
参数。那么 IEnumerable
在什么情况下是逆变呢?
希望我没有感到困惑!感谢您提前的答复!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
IEnumerable 不是逆变的。它是协变的。
来自 MSDN (IEnumerable< ;(<(T>)>) 接口) 我们有:
从这篇帖子中我们得知:
示例代码:
有关更多示例,请查看:
协变和逆变常见问题解答
C# 中的协变和逆变,第一部分(Eric Lippert 关于协变的精彩系列文章和逆变)
了解 C# 协方差和逆变(3)示例
IEnumerable isn't contra-variant. It's covariant.
From MSDN (IEnumerable<(Of <(T>)>) Interface) we have that:
From this post we have that:
Sample code:
For more examples on this, take a look at:
Covariance and Contravariance FAQ
Covariance and Contravariance in C#, Part One (Great series of posts by Eric Lippert about Covariance And Contravariance)
Understanding C# Covariance And Contravariance (3) Samples