F#-使用重载和参数调用c#方法

F#-使用重载和参数调用c#方法,f#,F#,不知道其他30篇文章是如何帮不上我的忙的,但我正在使用一个带有这些重载的c#dll: function TqlForBidAskTrade(string, int?, params string[]) function TqlForBidAskTrade(string[], int?, params string[]) 我可以用c#中所需的参数调用此方法,如下所示: TqlForBidAskTrade("string", null) F#中的等价物是什么?我似乎根本找不到要编译的东西。我试过

不知道其他30篇文章是如何帮不上我的忙的,但我正在使用一个带有这些重载的c#dll:

function TqlForBidAskTrade(string, int?, params string[])
function TqlForBidAskTrade(string[], int?, params string[])
我可以用c#中所需的参数调用此方法,如下所示:

TqlForBidAskTrade("string", null)
F#中的等价物是什么?我似乎根本找不到要编译的东西。我试过:

TqlForBidAskTrade("string", null)
TqlForBidAskTrade("string", Nullable<int>())
TqlForBidAskTrade("string", Nullable<int>(), null)
TqlForBidAskTrade("string", Nullable<int>(), [])
TqlForBidAskTrade("string", Nullable<int>(), ["doodah"])
TqlForBidAskTrade("string", 4, ["doodah"])
TqlForBidAskTrade(“字符串”,null)
TqlForBidAskTrade(“字符串”,可空()
TqlForBidAskTrade(“字符串”,null(),null)
TqlForBidAskTrade(“字符串”,可为null(),[]))
TqlForBidAskTrade(“字符串”,null(),[“doodah”])
TqlForBidAskTrade(“字符串”,4,[“doodah”])
似乎所有类似的请求我都应该偶然发现,但我已经找了一个小时了。

而且。。。掌心。

TqlForBidAskTrade(“string”,Nullable())确实有效,在我的随机代码修补中,我把语法搞乱了

您找到了解决方案,但要添加一些解释:

C#编译器专门处理
可为空的
。一个例子是
null
可以替换为
new Nullable()
。这是

在F#中,
Nullable
是与对应的
Nullable
最接近的东西,用于。如果在F#中定义,您的函数可能如下所示:


请注意,
new Nullable()
也可以工作。也就是说,如果您添加类型参数,您还需要显式地使用
new
@kvb:
Nullable()
-不使用
new
-也可以(甚至
Nullable()
)。@kvb:进一步考虑,我认为您已经改变了它:如果您使用
new
,您必须提供类型参数。@Daniel-oops,您绝对正确。我的评论是基于一个假设,即原始问题中的代码不起作用(事实似乎并非如此)。
type T =
  static member TqlForBidAskTrade(s:string, ?n:int, ?args:string[]) = ()

T.TqlForBidAskTrade("foo")