我在 C# 中有一个在 F# 中调用的函数,将其参数传递到Microsoft.FSharp.Collections.List<object>
.
如何从 C# 函数中的 F# 列表中获取项目?
EDIT
我找到了一种“函数式”风格的方式来循环它们,并且可以将它们传递给如下函数以返回 C# System.Collection.List:
private static List<object> GetParams(Microsoft.FSharp.Collections.List<object> inparams)
{
List<object> parameters = new List<object>();
while (inparams != null)
{
parameters.Add(inparams.Head);
inparams = inparams.Tail;
}
return inparams;
}
再次编辑
正如下面指出的,F# List 是 Enumerable,因此上面的函数可以用以下行替换;
new List<LiteralType>(parameters);
但是,有什么方法可以通过索引引用 F# 列表中的项目吗?
一般来说,避免将 F# 特定类型(如 F#“列表”类型)暴露给其他语言,因为体验并不是那么好(如您所见)。
F# 列表是一个 IEnumerable,因此您可以创建例如通过这种方式很容易获得 System.Collections.Generic.List 。
没有有效的索引,因为它是一个单链表,因此访问任意元素的时间复杂度为 O(n)。如果您确实需要索引,最好更改为其他数据结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)