c# - 相当于C#类型参数中F# _通配符

标签 c# f#

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/

相关文章:

c# - 在 C# 中检查空字符串的最有效方法

c# - asp.net 多个文件上传控件的多个上传

c# - LINQ,在映射中实现接口(interface)和异常的实体

c# - 当 Scroll 在 DataGridView 中发生时,单元格会重叠并绘制

c# - 为什么 F# 按位运算符为有符号类型填充 1?

F# System.TypeLoadException

visual-studio-2010 - F# 2010 Seq.生成_使用

f# - Frame.denseCols 中有错误吗?

f# - 模式匹配语法中的歧义

c# - 使用c#删除书签的内容而不删除ms word中的书签