我经常使用Dictionary对象,并且总是需要添加/删除/更新项目。
我想知道为什么没有内置的Update()
字典功能,甚至没有作为LINQ扩展名(与线程安全性,锁等UpdateSafe()
或类似物有关)
ConcurrentDictionary
对象具有AddOrUpdate()
。
注意:我正在寻找以前的SO帖子,该帖子解释了这个概念,但没有找到一个。
回答或引用解释该概念的帖子,将不胜感激。
答案 0 :(得分:8)
有,您可以使用this[]
访问器。
dict[key] = value;
这将添加或替换指定键的当前值。
与ConcurrentDictionary
的主要区别在于ConcurrentDictionary
是线程安全的。 Dictionary
不是。
CLR团队可能觉得有必要在AddOrUpdate
中创建一个名称为ConcurrentDictionary
的方法,因为添加和更新的方法更多。否则,您可能认为没有办法做到这一点,但是在功能上,它与this[]
访问器相同。