将 C# HashSet 转换为 F# Set

问题描述 投票:0回答:2

我有 F# 和 C# 之间共享的代码,我需要在 C# HashSet 和 F# Set 之间进行转换。 有没有简单的方法可以做到这一点?

c# .net f#
2个回答
8
投票

对于 F#-Set 使用的类型有额外的限制 - 如果你可以支持它们,你可以使用 Set.ofSeq 将其从 HashSet 转换 - 但我只会使用原始的 HashSet (可能是封装的) - 无需额外的工作。


0
投票

因为 Set 需要支持 IComparable,而 HashSet 的某些对象不支持,所以可以使用: https://github.com/fsprojects/fsharp-hashcollections/tree/master 代替。

这个HashSet库是不可变的,并且支持与Set.empty的模式匹配。您可以使用 HashSet.ofSeq 在此库中将 HashSet 从 C# 转换为 F#。只是要小心不要混合 C# HashSet 和 F# HashSet

© www.soinside.com 2019 - 2024. All rights reserved.