"新"导致红色波浪的关键字

时间:2014-07-09 14:50:40

标签: f# visual-studio-2013 f#-3.1

我想知道这里发生了什么......

我刚刚在Visual Studio 2013中创建了一个新的空F#控制台应用程序(使用F#3.1和.NET 4,FSharp.Core版本4.3.1.0)并使用Nuget添加了Reactive Extensions Main LibraryInstall-Package Rx-Main

现在看看这个:

Definition without new keyword

这有效,悬停测试显示val test: unit -> System.Reactive.Subjects.Subject<'a>。正如所料。然后我添加了new关键字。

Definition with new keyword

有趣。有人知道为什么添加new关键字会破坏代码吗?作为参考,如果您另外指定类型参数,它可以工作:

Definition with type parameters

2 个答案:

答案 0 :(得分:5)

我无法找到规范参考,但是当使用new显式类型时,需要args。你需要这样做:

let test() = new System.Reactive.Subjects.Subject<_>()

答案 1 :(得分:1)

它似乎是一个静态类,静态类无法新建。

http://msdn.microsoft.com/en-us/library/system.reactive.subjects.subject%28v=vs.103%29.aspx

要详细说明您的特定错误消息,这意味着公共没有可用的构造函数接受0参数。据我所知,静态类只有私有的无参数构造函数。