如何将两个值从F#返回到C#
我有一个F函数,它将字符串和数组返回给一些C代码。我尝试了一些方法,做了一些搜索,但没有结果。这是怎么做到的?我的F#函数(Gen.Best)以以下内容结尾:如何将两个值从F#返回到C#,c#,f#,parameter-passing,C#,F#,Parameter Passing,我有一个F函数,它将字符串和数组返回给一些C代码。我尝试了一些方法,做了一些搜索,但没有结果。这是怎么做到的?我的F#函数(Gen.Best)以以下内容结尾: (T1 Best).ToString,T2 Best // return a (string) and a (float []) to C# F#显示返回类型为(单位->字符串)*float[] (T1最佳)是一个(浮动->浮动)函数 在我的C#代码中,我有: Tuple<string, double[]> Ans = Ge
(T1 Best).ToString,T2 Best // return a (string) and a (float []) to C#
F#显示返回类型为(单位->字符串)*float[]
(T1最佳)是一个(浮动->浮动)函数
在我的C#代码中,我有:
Tuple<string, double[]> Ans = Gen.Best(XData, ResultData);
Tuple Ans=Gen.Best(扩展数据、结果数据);
编译器抱怨:
类型“Microsoft.FSharp.Core.Unit”是在未引用的程序集中定义的。您必须添加对程序集“FSharp.Core,Version=4.3.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”的引用。C:\Users\JDL\Dropbox\Formulas\VS-Bogdan\Quirkle\MainForm.cs 139 13 Quirkle 如何向程序集添加引用?(我是F#的新手) 及 无法将类型“System.Tuple”隐式转换为“System.Tuple”
C:\Users\JDL\Dropbox\Formulas\VS-Bogdan\Quirkle\MainForm.cs 139 46 Quirkle
你的问题并不清楚你有什么问题。猜测一下:如果您只是将F#代码编译为托管DLL程序集,并从C#代码中引用它(当然,将函数公开),您会发现函数实现为返回
System.Tuple
的实例。这在C代码中运行得很好
如果这不能解决你的问题,请编辑你的问题,添加更多细节,以明确你的问题。有关如何改进问题的更多信息,请参阅
编辑: 关于您的编辑:
FSharp.Core.dll
程序集中添加一个引用。例如,右键单击C#项目中的“引用”项,选择“添加引用…”,确保选择了“Assemblies”,然后在列表中找到所需的程序集(您可以在搜索框中键入“FSharp.Core”,以便更轻松地找到所需的程序集)System.Func
类型,而不是FSharpFunc
类型
有关我的建议的佐证,请参见相关答案。:)
你的问题并不清楚你有什么问题。猜测一下:如果您只是将F#代码编译为托管DLL程序集,并从C#代码中引用它(当然,将函数公开),您会发现函数实现为返回
System.Tuple
的实例。这在C代码中运行得很好
如果这不能解决你的问题,请编辑你的问题,添加更多细节,以明确你的问题。有关如何改进问题的更多信息,请参阅
编辑: 关于您的编辑:
FSharp.Core.dll
程序集中添加一个引用。例如,右键单击C#项目中的“引用”项,选择“添加引用…”,确保选择了“Assemblies”,然后在列表中找到所需的程序集(您可以在搜索框中键入“FSharp.Core”,以便更轻松地找到所需的程序集)System.Func
类型,而不是FSharpFunc
类型
有关我的建议的佐证,请参见相关答案。:)
您需要在C#项目中添加对程序集的引用,而不是在F#项目中。当然,FSharp.Core在F#项目中默认引用。本页介绍了如何: 另一个问题是您忘记了
ToString
调用中的括号。这一行:
(T1 Best).ToString,T2 Best
应该是这样的:
(T1 Best).ToString(),T2 Best
您编写的代码返回一个元组,其第一个元素不是调用ToString()的结果;它是ToString方法本身,表示为类型为
unit->string
的F#函数。您需要在C#项目中添加对程序集的引用,而不是F#项目。当然,FSharp.Core在F#项目中默认引用。本页介绍了如何:
另一个问题是您忘记了ToString
调用中的括号。这一行:
(T1 Best).ToString,T2 Best
应该是这样的:
(T1 Best).ToString(),T2 Best
您编写的代码返回一个元组,其第一个元素不是调用ToString()的结果;它是ToString方法本身,表示为类型为
unit->string
的F#函数,返回什么?请添加您正在使用的代码。您可以从F#项目创建类库(.dll),并调用其me