gpt4 book ai didi

excel - 在 F# 中的委托(delegate)、事件、事件处理程序上

转载 作者:行者123 更新时间:2023-12-04 20:17:28 25 4
gpt4 key购买 nike

如果我看 Control.IEvent<'Delegate,'Args> , 它强加于 'Args

IEvent<'Delegate,'Args when 'Delegate : delegate<'Args,unit>...>

WorkbookBase.NewSheet Event , 其中 WorkbookEvents_NewSheetEventHandler , 类型为 obj-> unit ,可以订阅,我会期待 'Argsobj 类型在其 F# 类型中。

但是,我看到事件 NewSheetIEvent<WorkbookEvents_NewSheetEventHandler, unit> 类型

enter image description here
这有什么可以解释的?

添加答案中提到的规范的摘录:

5.2.8 委托(delegate)约束
显式委托(delegate)约束具有以下形式:

类型:代表

在约束求解(第 14.5 节)期间,如果 type 是委托(delegate)类型 D 且声明类型 D = 的委托(delegate),则满足约束类型:委托(delegate)对象 * arg1 * ... * argN 和 tupled-arg-type = arg1 * ... * argN。也就是说,委托(delegate)必须匹配 CLI 设计模式,其中发送者对象是事件的第一个参数。

注意:此约束形式的存在主要是为了允许定义与事件编程相关的某些 F# 库函数。它很少直接用于 F# 编程。

委托(delegate)约束并不暗示任何关于子类型的内容。特别是,“委托(delegate)”约束并不意味着该类型是 System.Delegate 的子类型。

委托(delegate)约束仅适用于遵循 CLI 事件处理程序通常形式的委托(delegate)类型,其中第一个参数是“发送者”对象。原因是约束的目的是简化 CLI 事件处理程序向 F# 程序员的呈现。

最佳答案

how the spec defines委托(delegate)约束:obj sender 参数是隐式的。

关于excel - 在 F# 中的委托(delegate)、事件、事件处理程序上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19388087/

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