当前位置:  开发笔记 > 编程语言 > 正文

C#纯函数字典

如何解决《C#纯函数字典》经验,为你挑选了1个好方法。

是否存在(如果不是在标准库中,那么可能作为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`方法,它们返回一个新的修改过的不可变集合,但旧的集合保持不变.
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有