Инь Чжу ответ правильный, я бы хотел добавить одну деталь.В F # вы можете вызывать конструкторы .NET с ключевым словом new
или без него.Если new
опущен, нет необходимости добавлять универсальный параметр, но если вы используете new
, то вы должны добавить универсальный параметр, даже если вы позволите выводу типа делать работу, используя подстановочный знак _
.
Таким образом, вы можете сказать:
> ResizeArray([1; 2; 3;]);;
val it : System.Collections.Generic.List<int> = seq [1; 2; 3]
или
> new ResizeArray<_>([1; 2; 3;]);;
val it : ResizeArray<int> = seq [1; 2; 3]
, но не:
> new ResizeArray([1; 2; 3;]);;
new ResizeArray([1; 2; 3;]);;
----^^^^^^^^^^^
C:\Temp\stdin(5,5): error FS0033: The type 'Microsoft.FSharp.Collections.ResizeArray<_>' expects 1 type argument(s) but is given 0