我在C#中有一个函数在F#中被调用,将其参数传递给Microsoft.FSharp.Collections.List objectgt ;. 如何从C#函数中的F#列表中获取项目? 编辑 我已经找到了一个“功能”样式的方法来循环遍历它们
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#列表是可枚举的,所以上述功能可以替换为行;
new List<LiteralType>(parameters);
但是,有没有办法通过索引引用F#列表中的项目?
一般来说,避免将F#特定类型(如F#’列表’类型)暴露给其他语言,因为体验并不是那么好(如您所见).一个F#列表是一个IEnumerable,所以你可以创建一个例子.一个System.Collections.Generic.List从它这样很容易.
没有有效的索引,因为它是一个单链表,因此访问任意元素是O(n).如果你想要索引,更改到另一个数据结构是最好的.