c# - 为什么我们需要 C# 中的协变和逆变的新关键字?

标签 c# c#-4.0 covariance contravariance

有人可以解释为什么需要添加 out 或 in 参数来指示泛型类型是 C# 4.0 中的 Co 或 Contra 变体吗?

我一直在努力理解为什么这很重要以及为什么编译器不能简单地弄明白..

谢谢,

乔希

最佳答案

从事语言工作的 Eric Lippert 在 msdn 上有一系列帖子应该有助于澄清所涉及的问题:
http://blogs.msdn.com/ericlippert/archive/tags/Covariance+and+Contravariance/default.aspx

阅读该链接中显示的文章时,请从底部开始,然后向上阅读。

最终您将到达 #7 (Why do we need a syntax at all?) .

关于c# - 为什么我们需要 C# 中的协变和逆变的新关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268836/

相关文章:

java - 在没有可变类型的情况下,是否存在不变类型参数的情况?

linear-algebra - MATLAB : How do I ensure that the covariance matrix is positive definite when using Kalman Filter

c# - 等待同步的异步方法是否可以接受?

c# - 在 switch 语句的默认部分中使用负数作为 char

c# - 使用指针实现某些东西的安全(在 C# 意义上)方式

asp.net-mvc - 调用具有参数的 lambda 表达式的方法时,我可以使用命名参数吗?

c# - 一页多表单 (MVC3)

c# - 在同一解决方案中使用 VB.NET 和 C#

c# - 在 Windows Phone 8 中调用 PCL 中的方法时抛出 System.IO.FileNotFoundException

c# - Rust 中 fn 参数的协方差使用什么?