【问题标题】:convert .NET generic List to F# list将 .NET 通用列表转换为 F# 列表
【发布时间】:2010-06-23 20:14:04
【问题描述】:

是否有将 .NET List 转换为 F# 列表的内置方法?

【问题讨论】:

    标签: c# .net f# generic-list


    【解决方案1】:

    Microsoft.FSharp.Collections 命名空间中尝试List.ofSeq

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

    它不是专门针对System.Collections.Generic.List&lt;T&gt;,而是针对一般的IEnumerable&lt;T&gt;(F# 中的seq&lt;'T&gt;)类型,所以它应该仍然可以工作。

    (它也没有严格内置在 F# 语言中,但 List&lt;T&gt; 也没有内置到 C# 或 VB.NET 中。这些都是各自标准库的一部分。)

    【讨论】:

    • 我还注意到,在 2.0 编译器类型推断中,右侧的 List 在左侧显示为 seq(或 IEnumerable)。这些家伙很聪明(+1)
    【解决方案2】:

    给定IEnumerable&lt;T&gt; foo,您将执行以下操作(在 C# 中)以获得 F# list&lt;T&gt;

     var fsharpList = ListModule.OfSeq(foo);
    

    ListModule 指的是Microsoft.FSharp.Collections.ListModule,在 F# 内部被称为 List

    【讨论】:

    • F# 中没有 ListModule 这样的东西
    • 如果问题是关于 C# 还是 F#,则未指定。此代码在 C# 中。 F# 中有一个ListModule。它在 F# 中只是称为 list,因此在 F# 中称为 list.ofSeq == 在 C# 中称为 ListModule.OfSeq
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    相关资源
    最近更新 更多