c# - 等效于 C# 类型参数中的 F# _ 通配符
问题描述
F# 允许您让编译器计算出应该是什么类型参数。
let foo = [| 1 |]
let bar = Array.head<_> foo
(您实际上永远不会这样做,您会删除参数,但这只是说明性的)。
C# 中有什么等价的吗?
问题是......我有 F# 代码,它接受字面上 30 个类型参数,从 F# 调用此代码是微不足道的,编译器只是解决它(如果它不能,然后指定 1 个参数和通配符其余的会很好地暗示给编译器做什么),从 C# 调用这段代码是可怕的,因为你必须煞费苦心地计算出参数(如果你完全忽略它们,它会顽固地拒绝推断它们)。
附言
甚至像让 IDE 在 F# 代码中显式指定这些参数这样令人讨厌的 hack,然后可以在很大程度上将其粘贴到 C# 代码中也会有所帮助。
(我明白为什么 C# 的推理较弱,它是生命,但我的例子实际上很机械)
解决方案
其实我已经解决了。
如果我用来自特定类型的调用来包装超通用函数并将其写入 F#,然后我可以从我的 C# 代码中调用这个根本不是类型参数的函数,而不是花 15 分钟来尝试解决类型是什么。
代价是拥有一个外部 F# 库的 F# 包装器,但代码很简单。
推荐阅读
- mysql - 单个 SQL 连接可以运行并发事务吗?
- php - 使用 XMLreader 和 PHP 进行搜索和获取
- php - 使用 JSON 原始数据 Laravel 搜索 SQL
- java - 未能配置数据源:“url”属性 - 尽管已指定
- windows - 在 Windows 终端的 $USERPROFILE 中启动 Cygwin(预览版)
- c# - 实例化类时自动获取属性和默认值?
- asp.net - 对于 asp.net 程序,我应该将哪些文件上传到 WordPress?
- java - jasypt-spring-boot-starter 与 springfox-swagger 冲突
- python - 均匀分布变量之间的区别,Python
- c++ - 线程c ++的多线程向量