Microsoft.FSharp.Collections vs System.Collections.Immutable



我发现.Net中有一堆不可变的集合

F# 是一种专注于不可变性的语言,它有自己的不可变数据类型。有趣的是,我在 F# 的任何阅读中都没有看到对上述不可变集合的引用。

我想知道这些不可变集合和 F# 集合之间是否有任何关系?有什么指南可以使用吗?F# Map<_,_>ImmutableDictionary(TKey, TValue)哪个更好?

更新 也许我可以这样问:是否有人在同一项目中使用这些库或比较过他们的生产力?或者就像那样 - 首先用于 C#,后者用于 F#,仅此而已?

这种重复的原因很简单,System.Collections.Immutable是最近添加的,旨在用于 C#,因此可以理解的是,它的设计者不希望人们必须引用FSharp.Core.dll

至于在两者之间进行选择,我将在 C# 代码和打算从 C# 使用的 F# 代码中使用System.Collections.Immutable,并在所有其他 F# 代码中使用Microsoft.FSharp.Collections。AFAIK在性能方面没有显着差异。典型的代码看起来像是使用 S.C.I 的链式方法调用和使用 M.F.C 的一系列|>调用,但这实际上只是语法上的区别——从概念上讲,它们是一回事。

只是为了添加我的 2 美分:我目前的研究给人的印象是,System.Collections.Immutable应该有助于在编写 C# 时编写 F# ))

这是关于它们的 MSDN 博客文章。它引用了另一篇文章(MSDN也是)。在本文中,有一个对 T4 模板的损坏引用,该模板可用于在 C# 中轻松创建不可变对象:这是一个 TT 文件,这是一个可怕的转换结果。

这显然是一项伟大的工作,但它似乎重现了(通过使用System.Collections.Immutable)F#中已经自然存在的功能。

因此,目前的答案似乎是 - System.Collections.Immutable用于 C#,Microsoft.FSharp.Collections用于 F#,仅此而已。

相关内容

最新更新