这有效
open System
let f = Action(fun () -> Unchecked.defaultof<_>)
Run Code Online (Sandbox Code Playgroud)
但是这个
let f = System.Action(fun () -> Unchecked.defaultof<_>)
Run Code Online (Sandbox Code Playgroud)
产生编译错误
存在多种类型,称为"动作",采用不同数量的通用参数.提供一种类型的实例来消除歧义的类型的分辨率,例如, '操作< ,,_, ,,_, ,,_>'.
我知道我可以通过添加一个类型参数占位符(System.Action<_>(...))来修复它,但是知道它们为什么表现不同?
在规范第14.1.9节中找到了这个:
F打开模块或名称空间声明组时,项目将添加到名称环境中,如下所示:
- 将类型添加到TypeNames表.如果该类型有一个CLI-错位通用名称,如
List'1再一个条目下都加List和List'1.
是否为完全限定类型(省略了类型参数)复制了此行为?它似乎不是这样.
f# ×1