来自 Wikipedia :
协变:从较宽( double )转换为较窄(浮点)。
逆变:从较窄( float )转换为较宽( double )。
在 .NET 中,委托(delegate)具有协变性,因为它允许委托(delegate)的指定返回类型的派生类型成为它所引用的方法的返回类型。
委托(delegate)也具有逆变性,因为它允许委托(delegate)的指定参数(参数)的派生类型成为传递给它持有引用的方法的参数类型。
根据这两个与委托(delegate)相关的定义,它们不应该都是协方差吗?在这两种情况下,委托(delegate)人期望的是“更宽”的类型,但却被赋予了“更窄的类型”。
参见 here来自 MSDN 的示例。
那么,逆变 这个词在与委托(delegate)相关时在语言上有何意义?
最佳答案
最后一段简要总结了赋值兼容性。
//从语言上讲,这在参数与返回的意义上似乎是合乎逻辑的 - 所以方向//forward 或 backward 是关于进入或离开函数的。
关于.net - 从语言上讲,逆变与委托(delegate)有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236831/