F#调用多参数C#静态方法报FS0001、FS0003错误如何解决?
问题解决方法
错误原因
该报错是F#与C#的传参语法差异导致的:
C#定义的多参数方法属于元组式参数风格,不支持F#原生函数的柯里化调用逻辑。你用空格分隔传参的写法,相当于尝试先给方法传入第一个int参数,将其转为接收剩余参数的新函数,不符合C#方法的调用规则,因此会抛出要求int * string元组类型、值无法作为函数调用的两个错误。
解决方案
- 先确认F#项目已经添加了对同解决方案下C#项目的项目引用,否则无法识别
Factories命名空间。 - 修改F#代码中调用C#静态方法的行,将参数放在括号内用逗号分隔,替换原有的空格分隔写法即可。
修改后的完整F#代码如下:
open System open Factories [<EntryPoint>] let main argv = let result = FruitFactory.GiveMe(2, "Apples") printfn "%s" result printfn "Closing Fruit Factory!" 0
内容的提问来源于stack exchange,提问作者ViV
相关产品推荐
相关产品推荐

