.net - Microsoft.FSharp.Collections 与 System.Collections.Immutable

标签 .net collections f# immutability

我最近发现有一堆 immutable collections在.Net

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

我想知道那些不可变集合和 F# 集合之间有什么关系吗?有什么使用指南吗?什么更好,F# Map<_,_>ImmutableDictionary(TKey, TValue)等等?

更新 也许我可以这样问:有没有人有在同一个项目中使用这两个库的经验或比较过它们的生产力?或者就是这样——首先是针对 C# 的,后者是针对 F# 的,仅此而已?

最佳答案

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

至于两者之间的选择,我会使用System.Collections.Immutable在 C# 代码和旨在从 C# 中使用的 F# 代码中,以及 Microsoft.FSharp.Collections在所有其他 F# 代码中。 AFAIK 在性能方面没有显着差异。典型的代码看起来像使用 S.C.I 和一系列 |> 的链式方法调用。使用 M.F.C 调用,但这实际上只是句法差异 - 从概念上讲,这是同一回事。

关于.net - Microsoft.FSharp.Collections 与 System.Collections.Immutable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21136344/

相关文章:

f# - 使用 VSCode 和 Paket 添加文件到 `.fsproj`

.net - 生成 .tail IL 指令的简单 F# 代码是什么?

c# - 如何快速将 int 插入排序数组?

c# - Visual Studio 探查器不显示类名

c# - 从字符串中删除字母字符和空格

java - 哪些 Java 数据结构具有确定的迭代顺序?

python - 计算行日期之前 x 天的出现次数

c# - 如何编写包装类以使用部分泛型类型推断?

.net - C#中大文件的容错MD5计算

collections - 集合中的计数、长度、大小