我试图List<T>在F#中创建一个标准的.NET ,如下所示:
module Csv
open System;
type Sheet () =
let rows = new List<Object>()
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
没有类型的构造函数
List<Object>
C:\…\Csv.fs:6
我究竟做错了什么?
Tom*_*cek 26
作为其他人建议的更简单的替代方法,您可以使用名为的类型ResizeArray<T>.这是System.Collections.Generic.List<T>F#核心库中定义的类型别名:
type Sheet () =
let rows = new ResizeArray<Object>()
Run Code Online (Sandbox Code Playgroud)
在编译的代码中,ResizeArray<T>将编译为System.Collections.Generic. List<T>,所以如果你使用C#中的库,将没有任何区别.
你不必打开System.Collections.Generic,这将隐藏F#List<T>类型的定义(虽然这不是一个大问题),我认为这ResizeArray是一个更合适的数据结构名称.
kvb*_*kvb 11
您也需要打开System.Collections.Generic- List<_>您引用的类型是F#的不可变列表类型(来自Microsoft.FSharp.Collections命名空间,默认情况下是打开的),它不公开公共构造函数.
在List<T>类中定义的System.Collections.Generic命名空间,所以你需要添加:
open System.Collections.Generic
Run Code Online (Sandbox Code Playgroud)