2010-06-23 38 views

Respuesta

38

Pruebe List.ofSeq en el espacio de nombres Microsoft.FSharp.Collections.

#      List.ofSeq : seq<'T> -> 'T list 

No es específicamente para System.Collections.Generic.List<T>, pero para IEnumerable<T> (seq<'T> en Fa #) tipos en general, por lo que debería funcionar.

(Tampoco es fabricado exclusivamente en el # lenguaje C, pero tampoco es List<T> incorporado en C# o VB.NET. Esos son todos parte de las bibliotecas estándares respectivos.)

+0

También noté con la inferencia tipo compilador 2.0 la lista en el lado derecho aparece como un seq (o IEnumerable) en el lado izquierdo. Muy inteligente de esos tipos (+1) – BuddyJoe

7

Dada IEnumerable<T> foo que haría lo siguiente (en C#) para conseguir una F # list<T>:

var fsharpList = ListModule.OfSeq(foo); 

ListModule refiere a Microsoft.FSharp.Collections.ListModule, y se conoce como List desde dentro de la propia F #.

+0

No existe tal cosa como ListModule en F # – Joel

+2

No se especifica si la pregunta era sobre C# o F #. Este código está en C#. Hay un 'ListModule' en F #. Simplemente se llama 'list' en F #, así' list.ofSeq' en F # == 'ListModule.OfSeq' en C#. – basarat

Cuestiones relacionadas