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
System.Collections.Genericも開く必要がありList<_>ます。参照している型は、(既定で開かれる名前空間からの) F# の不変リスト型Microsoft.FSharp.Collectionsであり、パブリック コンストラクターを公開しません。
List<T>クラスはSystem.Collections.Generic名前空間で定義されているため、次を追加する必要があります。
open System.Collections.Generic