2010-06-23 41 views

回答

38

尝试List.ofSeqMicrosoft.FSharp.Collections命名空间中。

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

这不是专门针对System.Collections.Generic.List<T>,但IEnumerable<T>seq<'T>在F#)类型一般,所以它仍然应该工作。

(它也没有严格建立在F#语言,但也不是List<T>内置到C#或VB.NET,这些都是各自的标准库的一部分。)

+0

我还注意到,2.0编译器类型推理右侧的List 在左侧显示为seq(或IEnumerable)。这些家伙很聪明(+1) – BuddyJoe 2010-06-23 20:34:44

7

鉴于IEnumerable<T> foo你会做以下(在C#),以得到一个F#list<T>

var fsharpList = ListModule.OfSeq(foo); 

ListModuleMicrosoft.FSharp.Collections.ListModule,并且从F#本身内被称为List

+0

F#中没有ListModule这样的东西# – Joel 2015-03-23 21:26:00

+2

如果问题是关于C#或F#,那么它没有被指定。这段代码是用C#编写的。 F#中有一个'ListModule'。它只是在F#中调用'list',所以'#list.ofSeq'在C#中的F#=='ListModule.OfSeq'中。 – basarat 2015-03-23 22:16:19