我想在F#像这样来创建一个标准的.NET List<T>
:F#中创建一个泛型列表<T>
module Csv
open System;
type Sheet() =
let rows = new List<Object>()
,但我得到了以下错误:
No constructors are available for the type
List<Object>
C:\…\Csv.fs
: 6
我在做什么错误?
我想在F#像这样来创建一个标准的.NET List<T>
:F#中创建一个泛型列表<T>
module Csv
open System;
type Sheet() =
let rows = new List<Object>()
,但我得到了以下错误:
No constructors are available for the type
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#,不会有任何区别。
您不必打开System.Collections.Generic
,这将隐藏F#List<T>
类型的定义(虽然这不是什么大问题),我认为这ResizeArray
是数据结构的更合适的名称反正。
您需要打开System.Collections.Generic
,太 - 你引用List<_>
类型是F#的不可变列表类型(从Microsoft.FSharp.Collections
命名空间,这是默认开启),它不公开公共构造函数。
的List<T>
class在System.Collections.Generic
namespace的,所以您需要添加:
open System.Collections.Generic