【问题标题】:Why there is no Update() function in Dictionary object?为什么 Dictionary 对象中没有 Update() 函数?
【发布时间】:2018-08-28 09:38:00
【问题描述】:

我经常使用 Dictionary 对象,并且总是需要添加/删除/更新项目。

我想知道为什么 Dictionary 没有内置 Update() 函数,甚至没有作为 LINQ 扩展(与线程安全、锁等相关。例如 UpdateSafe() 或类似)

ConcurrentDictionary 对象具有AddOrUpdate()

注意:我在寻找以前的 SO 帖子来解释这个概念,但没有找到。

将不胜感激回答或参考解释该概念的帖子。

【问题讨论】:

  • 所以你想要一个线程安全的Update 方法?您到底希望它做什么?
  • 您是否搜索过“如何更新字典”? 一种方法可以做到这一点,它只是不称为Update,而是indexer
  • 你可以在这里看到内部人士讨论这个问题:github.com/dotnet/corefx/issues/1942
  • @Sweeper 我更新的原因有很多,有时我想要线程安全,有时不是,对我来说很奇怪有更新功能(任何类型),而添加/删除确实存在,并且更新是一个微不足道的功能

标签: c# .net dictionary


【解决方案1】:

有,您可以使用this[] 访问器。

dict[key] = value;

这将添加或替换指定键的当前值。

ConcurrentDictionary 的主要区别在于ConcurrentDictionary 是线程安全的。 Dictionary 不是。

CLR 团队可能觉得有必要在ConcurrentDictionary 中创建一个名称为AddOrUpdate 的方法,因为添加和更新的方法更多。否则你可能认为没有办法做到这一点,但在功能上它与this[] 访问器相同。

【讨论】:

  • 感谢@Patrick Hofman,熟悉语法,您关于“添加和更新的更多方法”的注释很有意义。
猜你喜欢
  • 2015-04-16
  • 2011-10-30
  • 2011-05-18
  • 2010-10-04
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
相关资源
最近更新 更多