gpt4 book ai didi

.net - 从语言上讲,逆变与委托(delegate)有什么关系?

转载 作者:行者123 更新时间:2023-12-01 23:25:59 24 4
gpt4 key购买 nike

来自 Wikipedia :

协变:从较宽( double )转换为较窄(浮点)。
逆变:从较窄( float )转换为较宽( double )。

在 .NET 中,委托(delegate)具有协变性,因为它允许委托(delegate)的指定返回类型的派生类型成为它所引用的方法的返回类型。

委托(delegate)也具有逆变性,因为它允许委托(delegate)的指定参数(参数)的派生类型成为传递给它持有引用的方法的参数类型。

根据这两个与委托(delegate)相关的定义,它们不应该都是协方差吗?在这两种情况下,委托(delegate)人期望的是“更宽”的类型,但却被赋予了“更窄的类型”。

参见 here来自 MSDN 的示例。

那么,逆变 这个词在与委托(delegate)相关时在语言上有何意义?

最佳答案

http://blogs.msdn.com/b/ericlippert/archive/2009/11/30/what-s-the-difference-between-covariance-and-assignment-compatibility.aspx

最后一段简要总结了赋值兼容性。

//从语言上讲,这在参数与返回的意义上似乎是合乎逻辑的 - 所以方向//forward 或 backward 是关于进入或离开函数的。

关于.net - 从语言上讲,逆变与委托(delegate)有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com