C#列表和F#列表之间的转换
备注:这是一份自我文档,但如果您有任何其他建议,或者如果我犯了任何错误/遗漏了一些明显的内容,我将非常感谢您的帮助 资料来源:C#列表和F#列表之间的转换,c#,f#,C#,F#,备注:这是一份自我文档,但如果您有任何其他建议,或者如果我犯了任何错误/遗漏了一些明显的内容,我将非常感谢您的帮助 资料来源: 我是F和C的初学者,我想把C列表转换成F列表,反之亦然。执行此操作的代码/命令会根据代码的位置(在C或F中)而变化 请看下面我的答案。如果你有任何其他建议,请告诉我。谢谢。在C#文档中,我可以使用ListModule.OfSeq和.ToList(),如下所示: // Currently inside a C# document var CS_list = new
我是F和C的初学者,我想把C列表转换成F列表,反之亦然。执行此操作的代码/命令会根据代码的位置(在C或F中)而变化 请看下面我的答案。如果你有任何其他建议,请告诉我。谢谢。在C#文档中,我可以使用
ListModule.OfSeq
和.ToList()
,如下所示:
// Currently inside a C# document
var CS_list = new List<int> {1,2,3};
var FS_list = ListModule.OfSeq(CS_List); // Microsoft.FSharp.Collections.ListModule
var CS_converted_back = FS_List.ToList();
// Currently inside an F# document
let FS_list = [1;2;3]
let CS_list = ResizeArray<int> FS_list // System.Collections.Generic.List
let FS_converted_back = Seq.toList CS_list
如果我犯了任何错误,或者遗漏了一些明显的内容,请让我知道。我认为在这里把答案放在答案中,而不是把答案放在问题本身中是合适的。我把答案移到下面。谢谢。您可以使用
Seq.toList
或List.ofSeq
。问题是为什么您要转换,因为Seq
模块的功能几乎与List
模块相同。@DavidRaab,List在模式匹配方面效果更好,但总的来说,我同意,在使用其他.net语言时,只需使用Seq即可。@monoceres是的,这是真的,我认为这不重要。列表上的模式匹配对于编写自己的低级递归函数非常有用。您还可以使用List.head
和List.tail
编写它们,而不是使用模式匹配。然后,它们很好地转换为Seq.head
和Seq.tail
。但是在这种情况下,我想使用seq{}
计算表达式还是更好的。