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

Jef*_*f D 3 f#

不知道其他30篇文章是如何在这里帮助我的,但我正在使用这些重载的ac#dll:

function TqlForBidAskTrade(string, int?, params string[])
function TqlForBidAskTrade(string[], int?, params string[])
Run Code Online (Sandbox Code Playgroud)

我可以用c#中的params调用这个方法,如下所示:

TqlForBidAskTrade("string", null)
Run Code Online (Sandbox Code Playgroud)

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"])
Run Code Online (Sandbox Code Playgroud)

看起来好像我应该偶然发现所有相似的请求,但我一直在寻找一个小时.

Jef*_*f D 5

和...面掌.
TqlForBidAskTrade("string",Nullable())确实有效,在我的随机代码修补中,我搞砸了语法.

  • @Daniel - 哎呀,你说得对.我的评论基于原始问题中的代码不起作用的假设(似乎不是这种情况). (2认同)

Dan*_*iel 5

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

C#编译器Nullable<T>专门处理.null可以用一个例子代替new Nullable<T>().这是另一个例子.

在F#中,Nullable<'T>只是另一种类型:没有糖,没有魔力.option<'T>是最接近Nullable对应物的东西,用于可选参数.如果在F#中定义,您的函数可能如下所示:

type T =
  static member TqlForBidAskTrade(s:string, ?n:int, ?args:string[]) = ()

T.TqlForBidAskTrade("foo")
Run Code Online (Sandbox Code Playgroud)