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