我目前正在使用C#编写的GUI编写F#库,我想问一下将F#(通用)列表传递给C#代码(通用IEnumerable)的最佳或正确方法是什么。< / p>
到目前为止,我找到了三种方法:
[1; 2; 3; 4; 5;] |> List.toSeq
[1; 2; 3; 4; 5;] |> Seq.ofList
[1; 2; 3; 4; 5;] :> seq<int>
请问这三种方法有什么实际区别吗?
答案 0 :(得分:16)
如果您查看F#库源代码,您会发现它们都是相同的:
Seq.ofList
只需拨打List.ofSeq
就可以看到here in the "list.fs" file
List.toSeq
使用s :> seq<_>
实施,您可以看到here in the "seq.fs" file
就可读性而言,我可能会使用Seq.ofList
或List.toSeq
,特别是如果代码是更大的F#管道的一部分,因为它会使代码更好一些:
someInput
|> List.map (fun x -> whatever)
|> List.toSeq