如何将列表从C#传递给F#?

epo*_*ter 7 c# f#

我知道f#列表中的f#列表不一样.为了能够将ac#应用程序中的int列表传递给f#库,我需要做什么?我希望能够在f#代码中对数据进行模式匹配.

Ale*_*nov 8

您可以使用

Seq.toList : IEnumerable<'a> -> list<'a>
Run Code Online (Sandbox Code Playgroud)

将任何IEnumerable<'a> seq一个转换为F#列表.请注意,F#列表是不可变的; 如果你想使用可变列表,你不需要做任何特殊的事情,但你将无法使用模式匹配.或者,您可以定义活动模式System.Collections.Generic.List<'a>; 这只是一个坏主意.


epo*_*ter 3

这就是我最终的做法。

FSharp代码:

let rec FindMaxInList list = 
   match list with
   | [x] -> x
   | h::t -> max h (FindMaxInList t)
   | [] -> failwith "empty list"

let rec FindMax ( array : ResizeArray<int>) =
   let list = List.ofSeq(array)
   FindMaxInList list
Run Code Online (Sandbox Code Playgroud)

c 夏普代码:

    List<int> myInts = new List<int> { 5, 6, 7 };
    int max = FSModule.FindMax(myInts);
Run Code Online (Sandbox Code Playgroud)