用null解决重载歧义

时间:2014-03-09 17:14:55

标签: f#

我正在使用F#中的API(我无法控制),它声明了两个构造函数,如:

public TheType(string bar, bool foo)

public TheType(IDisposable baz, bool foo)

我需要使用第一个构造函数创建对象的实例,但是将null传递给bar。 F#编译器当然对我试图解决的构造函数感到困惑:

//Private field
static let blah : TheType = new TheType(null, false)

我可以通过将null转换为字符串:

来解决此问题
static let blah : TheType = new TheType(null :> string, false)

哪个有效,但这给了我一个编译警告:

  

类型'string'没有任何正确的子类型,不需要用作静态强制的目标

哪个也有意义。有没有办法解决过载歧义而不诉诸编译警告?

1 个答案:

答案 0 :(得分:7)

您可以指定null的类型:

static let blah : TheType = new TheType((null : string), false)