使用ConcurrentDictionary获取“AddOrReplace”功能

时间:2010-09-27 21:42:54

标签: c#-4.0

我使用ConcurrentDictionary创建一个简单的Object缓存。如果密钥不存在,我试图以原子方式将项添加到集合中,或者如果密钥已存在则替换前一项,即“AddOrReplace”。似乎没有明显的方法来做到这一点。有人可以提出建议吗?

2 个答案:

答案 0 :(得分:11)

你不能只使用索引器吗?

dictionary[key] = value;

请参阅Stephen Toub's blog entry

  

如果你想......   [...]

     
      
  • 无条件地将键/值对存储到字典中,   如果密钥已存在,则覆盖该密钥的任何值...

         
        
    • 使用索引器的setter,例如字典[key] = newValue。

      public TValue this[TKey key] { get; set; }
      
    •   
  •   

用新的值覆盖现有值 - 我是否正确地说这是你想要的,而不是将新值基于现有值?< / p>

答案 1 :(得分:-1)

听起来你正在寻找AddOrUpdate method