gpt4 book ai didi

c# - 从 C# 代码内部访问 F# List>

转载 作者:太空宇宙 更新时间:2023-11-03 19:26:25 24 4
gpt4 key购买 nike

这是 my previous thread 的扩展.我认为访问 List<List<>>与简单列表非常相似,但我遇到了一些问题。

这是 F# 代码:

type X = 
{
valuex : int
}
let l =
[
for i in 1 .. 10 ->
[
for j in 1 .. 10 ->
{valuex = i * j}
]

]

根据我之前的帖子,我尝试在 C# 代码中执行以下操作:

IList<IList<MyModule.X>> list = MyModule.l.ToList();

但这不能编译。
有人可以这是我的错误吗?

最佳答案

在这种情况下,属性的类型是 FSharpList<FSharpList<MyModule.X>>所以你必须将每个内部 FSharpList 映射到 IList<T>然后将生成的序列具体化为一个列表(列表)。

这看起来像:

IList<IList<MyModule.X>> list = MyModule.l
.Select(inner => (IList<MyModule.X>) inner.ToList())
.ToList();

您真的需要所有这些精确转换吗?集合已经是 IEnumerable<IEnumerable<T>> 的事实不是吗?够好了?事实上,FSharpList<T>本身是 C# 中非常有用的类型,因此除非绝对必要,否则我会远离这些转换。

编辑:

如果你只是需要迭代元素,你只需要一个循环:

foreach(var innerList in MyModule.l)
{
foreach(var item in innerList)
{
Console.WriteLine(item.valuex);
}
}

关于c# - 从 C# 代码内部访问 F# List<List<>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com