我正在寻找ConcurrentDictionary中的一种方法,该方法允许我仅在值等于我指定值时按键删除一个条目,类似于 TryUpdate 的删除等效方法。
唯一能够实现这个功能的方法似乎是这个方法:
ICollection<KeyValuePair<K, V>>.Remove(KeyValuePair<K, V> keyValuePair)
这是ICollection接口的显式实现,换句话说,我必须先将我的ConcurrentDictionary强制转换为ICollection,以便调用Remove方法。
Remove恰好符合我的要求,而且那个转换也没什么大不了的,源代码显示它调用了带有bool matchValue = true参数的私有方法TryRemovalInternal,所以看起来很干净整洁。
然而,让我有点担心的是,它没有被记录为ConcurrentDictionary的乐观并发Remove方法。因此,http://msdn.microsoft.com/en-us/library/dd287153.aspx只是复制了ICollection的样板内容,而How to: Add and Remove Items from a ConcurrentDictionary也没有提到该方法。
是否有人知道这是正确的方法,或者是否有其他我错过的方法?