2010-06-23 11 views

Antwort

38

Versuchen Sie List.ofSeq im Namespace Microsoft.FSharp.Collections.

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

Es ist nicht speziell für System.Collections.Generic.List<T>, aber für IEnumerable<T> (seq<'T> in F #) Arten im Allgemeinen, so sollte es immer noch funktionieren.

(Es ist auch grundsätzlich nicht in die F # Sprache gebaut, aber weder List<T> in C# oder VB.NET gebaut. Das sind alle Teile der jeweiligen Standardbibliotheken.)

+0

Ich bemerkte auch mit dem 2.0 Compiler Typ Inferenz die Liste auf der rechten Seite zeigt sich als Seq (oder IEnumerable) auf der linken Seite. Ziemlich klug von diesen Typen (+1) – BuddyJoe

7

Da IEnumerable<T> foo Sie tun würden, die folgende (

var fsharpList = ListModule.OfSeq(foo); 

ListModule bezieht sich auf Microsoft.FSharp.Collections.ListModule, und wird als List aus F # selbst: in C#) eine F # list<T> zu erhalten.

+0

Es gibt keine solche Sache wie ListModule in F # – Joel

+2

Es ist nicht angegeben, ob die Frage über C# oder F # war. Dieser Code ist in C#. Es gibt ein 'ListModule' in F #. Es heißt nur 'liste' in F #, also' list.ofSeq' in F # == 'ListModule.OfSeq' in C#. – basarat