2012-08-17 6 views
9

Estoy tratando de crear un estándar .NET List<T> en Fa # así:Creación de una lista genérica <T> en Fa #

module Csv 

open System; 

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

pero me sale el siguiente error:

No constructors are available for the type List<Object>
C:\…\Csv.fs : 6

¿Qué estoy haciendo ¿incorrecto?

Respuesta

24

Como una alternativa más sencilla a lo que otros sugieren, se puede utilizar el tipo de llamada ResizeArray<T>. Este es un alias de tipo para System.Collections.Generic.List<T> se define en las bibliotecas # núcleo F:

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

En el código compilado, ResizeArray<T> se compilará a System.Collections.Generic. List<T>, por lo que si usted utiliza su biblioteca de C#, no habrá ninguna diferencia.

Usted no tiene que abrir System.Collections.Generic, lo que oculta la definición del tipo F # List<T> (aunque esto no es un gran problema), y creo que ResizeArray es un nombre más apropiado para la estructura de datos de todos modos.

10

Es necesario abrir los System.Collections.Generic, también - el tipo List<_> que está haciendo referencia es F # 's inmutable tipo de lista (de la Microsoft.FSharp.Collections espacio de nombres, que se abre por defecto), que no se exponga constructores públicos.

Cuestiones relacionadas