作者:路人甲 | 2023-09-06 13:57
是否存在(如果不是在标准库中,那么可能作为Nuget包)一个适合在C#中使用的类,它提供了一个纯函数字典?也就是说,在添加或删除密钥的情况下,将返回一个新字典,同时保留原始字典不变?
1> Dmitry Byche..:
在您的情况下,您正在寻找不可变的集合ImmutableDictionary
:
https://msdn.microsoft.com/en-us/library/dn467181(v=vs.111).aspx
当您操作不可变字典时,会创建原始字典的副本,应用操作并返回新的不可变字典.
如果有人想知道只读集合之间的区别,如[`ReadOnlyDictionary`](https://msdn.microsoft.com/en-us/library/gg712875(v = vs.110).aspx)和不可变的像[`ImmutableDictionary`](https://msdn.microsoft.com/en-us/library/dn467063(v = vs.111).aspx)这样的集合:前者不提供修改集合的方法,但是它只是原始的,可修改的集合的包装器,如果更改它也会修改readonly集合.不可变集合不是包装器,它们不能被更改.
...但他们提供了"修改"它们的方法,如[`Add`](https://msdn.microsoft.com/en-us/library/dn466983(v = vs.111).aspx),其工作方式类似于`string`方法,它们返回一个新的修改过的不可变集合,但旧的集合保持不变.