我正在尝试List<T>
在 F# 中创建一个标准的 .NET,如下所示:
module Csv
open System;
type Sheet () =
let rows = new List<Object>()
但我收到以下错误:
该类型没有可用的构造函数
List<Object>
C:\…\Csv.fs
:6
我究竟做错了什么?
我正在尝试List<T>
在 F# 中创建一个标准的 .NET,如下所示:
module Csv
open System;
type Sheet () =
let rows = new List<Object>()
但我收到以下错误:
该类型没有可用的构造函数
List<Object>
C:\…\Csv.fs
:6
我究竟做错了什么?
作为其他人建议的更简单的替代方法,您可以使用名为ResizeArray<T>
. System.Collections.Generic.List<T>
这是在 F# 核心库中定义的类型别名:
type Sheet () =
let rows = new ResizeArray<Object>()
在编译后的代码中,ResizeArray<T>
将被编译为System.Collections.Generic. List<T>
,因此如果您使用 C# 中的库,则不会有任何区别。
您不必 open System.Collections.Generic
,这将隐藏 F#List<T>
类型的定义(尽管这不是一个大问题),而且我认为ResizeArray
无论如何这对于数据结构来说是一个更合适的名称。
您也需要 open System.Collections.Generic
——List<_>
您引用的类型是 F# 的不可变列表类型(来自Microsoft.FSharp.Collections
默认打开的命名空间),它不公开公共构造函数。
该类是在命名空间中定义的List<T>
,因此您需要添加:System.Collections.Generic
open System.Collections.Generic