"новое" ключевое слово, вызывающее красный закорючка

Интересно, что здесь происходит...

Я только что создал новое пустое консольное приложение F# в Visual Studio 2013 (с использованием F# 3.1 и.NET 4, FSharp.Core версии 4.3.1.0) и добавил основную библиотеку Reactive Extensions с помощью Nuget: Install-Package Rx-Main

Теперь проверьте это:

Определение без нового ключевого слова

Это работает и парящий над тестовыми шоу val test: unit -> System.Reactive.Subjects.Subject<'a>, Как и ожидалось. Затем я добавил new ключевое слово.

Определение с новым открытым словом

Интересно. Кто-нибудь знает, почему добавление new ключевое слово нарушает код? Для справки, если дополнительно указать параметр типа, он работает:

Определение с параметрами типа

2 ответа

Решение

Я не могу найти ссылку на спецификацию, но при использовании new явные аргументы типа обязательны. Вам нужно сделать:

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

Похоже, что это статический класс, и статические классы не могут быть обновлены.

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

А для уточнения вашего конкретного сообщения об ошибке это означает, что нет общедоступного доступного конструктора, который принимает 0 параметров. Насколько я знаю, статические классы имеют только частные конструкторы без параметров.

Другие вопросы по тегам