Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#列表和F#列表之间的转换_C#_F# - Fatal编程技术网

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{}
计算表达式还是更好的。