F# 允许您让编译器确定参数的类型。
let foo = [| 1 |]
let bar = Array.head<_> foo
(你永远不会真正这样做,你会删除参数,但这只是说明性的)。
C# 中有等效的东西吗?
问题是...我的 F# 代码实际上需要 30 个类型参数,从 F# 调用此代码很简单,编译器只是将其解决(如果不能,则指定 1 个参数并通配其余参数)会很好地提示编译器要做什么),从 C# 调用这段代码是可怕的,因为你必须费尽心思地计算出参数(如果你完全忽略它们,它就会顽固地拒绝推断它们)。
附注
即使是令人讨厌的黑客行为,例如让 IDE 在 F# 代码中显式指定这些参数,然后将其大部分粘贴到 C# 代码中,也会有所帮助。
(我理解为什么 C# 的推理能力较弱,这就是生活,但我的例子实际上相当机械)
最佳答案
其实我已经解决了。
如果我用来自特定类型的调用包装超通用函数并将其写入 F# 中,那么我可以从我的 C# 代码中调用这个根本不是类型参数的函数,而无需花费 15 分钟尝试找出类型是什么。
成本是拥有外部 F# 库的 F# 包装器,但代码很简单。
关于c# - 相当于C#类型参数中F# _通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64405697/