Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
等价于C#类型参数中的F#通配符_C#_F# - Fatal编程技术网

等价于C#类型参数中的F#通配符

等价于C#类型参数中的F#通配符,c#,f#,C#,F#,F#允许编译器计算出类型参数应该是什么 let foo = [| 1 |] let bar = Array.head<_> foo 让foo=[| 1 |] 设bar=Array.head foo (实际上,您永远不会这样做,您会删除参数,但这只是说明性的) 在C#中有什么是等价的吗 问题是…我有一个F#代码,它实际上需要30个类型参数,从F#调用这段代码很简单,编译器只是解决了它(如果不能,那么指定1个参数并通配符其余的参数将很好地提示编译器该做什么),从C#调用这段代码是可怕

F#允许编译器计算出类型参数应该是什么

let foo = [| 1 |]
let bar = Array.head<_> foo
让foo=[| 1 |]
设bar=Array.head foo
(实际上,您永远不会这样做,您会删除参数,但这只是说明性的)

在C#中有什么是等价的吗

问题是…我有一个F#代码,它实际上需要30个类型参数,从F#调用这段代码很简单,编译器只是解决了它(如果不能,那么指定1个参数并通配符其余的参数将很好地提示编译器该做什么),从C#调用这段代码是可怕的,因为你必须费力地计算出这些参数(如果你完全忽略它们,它顽固地拒绝推断它们)

附言

即使是像让IDE在F代码中显式指定这些参数这样的讨厌的黑客,也会有帮助,然后这些参数可以大量粘贴到C代码中


(我理解为什么C#的推理较弱,这是生命,但我的例子实际上相当机械)

事实上我已经解决了它

如果我用特定类型的调用来包装超泛型函数,并用F#编写它,那么我就可以从我的C#代码中调用这个完全不是类型参数化的函数,而不必花15分钟的时间来计算类型是什么


成本是拥有一个外部F#库的F#包装器,但代码很简单。

不确定“推断”一个参数是什么意思,但在C中,如果你有30个可选参数(你似乎在说你有),那么你可以只命名你有的参数,而忽略你没有的:
myMethod(param17:“hello”,param28:“byebye”,param4:123456)
这些是类型参数