F#允许您让编译器计算出类型参数应该是什么。
let foo = [| 1 |]
let bar = Array.head<_> foo
(您实际上永远不会这样做,您会丢弃参数,但这只是说明性的)。
在C#中有没有等同的东西?
问题是……我有接受30个类型参数的F#代码,从F#调用这段代码是微不足道的,编译器只是解决它(如果它不能,那么指定1个参数并通配符将很好地提示编译器做什么),从C#调用这段代码是可怕的,因为你必须费力地计算出参数(如果你完全省略它们,它顽固地拒绝推断它们)。
附注:
即使是像让集成开发环境在F#代码中显式地指定这些参数,然后可以大量粘贴到C#代码中这样的讨厌的技巧也会有所帮助。
(我理解为什么C#的推理较弱,它是生活,但我的例子实际上是相当机械的)
发布于 2020-10-18 02:24:07
实际上我已经解决了这个问题。
如果我用来自特定类型的调用包装超泛型函数,并将其写在F#中,那么我就可以从我的C#代码中调用这个函数,它根本不是类型参数,而不需要花费15分钟来尝试确定类型是什么。
代价是拥有一个外部F#库的F#包装器,但是代码很简单。
https://stackoverflow.com/questions/64405697
复制相似问题