是否存在(如果不是在标准库中,那么可能作为Nuget包)一个适合在C#中使用的类,它提供了一个纯函数字典?也就是说,在添加或删除密钥的情况下,将返回一个新字典,同时保留原始字典不变?
答案 0 :(得分:8)
您正在寻找不可变的集合,ImmutableDictionary<TKey, TValue>
在您的案例中:
https://msdn.microsoft.com/en-us/library/dn467181(v=vs.111).aspx
当您操纵不可变字典时,原始文件的复制 字典制作,应用操作和新的不可变
返回字典
答案 1 :(得分:3)
我在System.Collections.Immutable中找到了ImmutableDictionary。您可以在https://msdn.microsoft.com/fr-fr/library/dn467181(v=vs.111).aspx
找到更多信息答案 2 :(得分:3)
这个问题应该改为“.NET是否有任何只读或不可变的词典”?答案对两者都是肯定的。
只读字典功能由ReadOnlyDictionary类提供。
不变性意味着别的东西 - 这意味着即使另一个客户正在对其进行更改,一个客户对集合的看法也不会改变。这是由ImmutableDictionary类
提供的答案 3 :(得分:1)
最好的功能词典(或#39;地图&#39;因为它们在功能世界中已知)可作为此C#功能库的一部分提供:
https://github.com/louthy/language-ext
这是地图模块:
https://github.com/louthy/language-ext/blob/master/LanguageExt.Core/Map.cs
免责声明:我写了。但是库的原因是为了促进C#中的函数式编程。而ImmutableDictionary的接受答案是更加OO风格的接口(即使它使用不可变的语义)。