11

List<T>次のように、F# で標準の .NET を作成しようとしています。

module Csv

open System;

type Sheet () =
  let rows = new List<Object>()

しかし、次のエラーが表示されます。

タイプList<Object>
C:\…\Csv.fs: 6で使用できるコンストラクターはありません

私は何を間違っていますか?

4

3 に答える 3

29

他の人が提案するより簡単な代替手段として、という名前の型を使用できます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

于 2012-08-17T17:47:07.653 に答える
11

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

于 2012-08-17T17:28:07.677 に答える
9

List<T>クラスはSystem.Collections.Generic名前空間で定義されているため、次を追加する必要があります。

open System.Collections.Generic
于 2012-08-17T17:28:23.450 に答える