我在 ConcurrentDictionary 中寻找一种方法,当且仅当值等于我指定的值时,它允许我通过键删除条目,类似于TryUpdate的等价物,但用于删除。
这样做的唯一方法似乎是这种方法:
ICollection<KeyValuePair<K, V>>.Remove(KeyValuePair<K, V> keyValuePair)
它是 ICollection 接口的显式实现,换句话说,我必须先将我的 ConcurrentDictionary 转换为 ICollection,这样我才能调用 Remove。
Remove 完全符合我的要求,而且该演员表也没什么大不了的,源代码也显示它调用私有方法 TryRemovalInternal 和bool matchValue = true,所以它看起来很干净。
然而,让我有点担心的是它没有记录为 ConcurrentDictionary 的乐观并发 Remove 方法,因此http://msdn.microsoft.com/en-us/library/dd287153.aspx只是复制了 ICollection 样板文件,并且How to: Add and Remove Items from a ConcurrentDictionary也没有提到该方法。
有谁知道这是要走的路,还是我缺少其他方法?