F#powerpack带有一组转换方法,可以从Func 转换为F#函数(标准函数或元组函数)。但是有可能实现相反的目的:如果您想从F#代码中调用采用Func 并希望使用本机F#lambda表达式的C#方法(例如fun x-> some_function_of(x))?

如果我将带有签名'a->'b的F#函数发送给希望使用Func的C#方法,则F#编译器会产生以下错误:

该表达式的类型应为Function ,但此处的类型为'T->'R

我想保留F#lambda表达式,但要使用翻译层才能将其作为C#Func lambda发送。这可以实现吗?

最佳答案

F#为采用相应函数类型的F#值的所有委托(delegate)类型提供构造函数。例如。在您的情况下,您想使用System.Func<_,_>(fun x -> ...),它将应用生成的('a -> 'b) -> System.Func<'a, 'b>类型的构造函数。

关于f# - F#和C#lambda之间的互操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3392000/

10-11 22:35
查看更多