似乎ConcurrentDictionary只有一个TryRemove方法但没有Remove方法。这是为什么?
当我想按键删除条目时,我不在乎价值。我怎么能这样做?
答案 0 :(得分:2)
TryRemove
是ConcurrentDictionary
的原生方法,与其他集合一样,您可以使用ICollection
方法明确实施Remove
:
ConcurrentDictionary<TKey, TValue>.ICollection<KeyValuePair<TKey, TValue>>.Remove
http://msdn.microsoft.com/en-us/library/dd287153%28v=vs.110%29.aspx
所以TryRemove
是Remove
的安全替代品,但您可以在两者之间进行选择。
答案 1 :(得分:1)
据我所知,ConcurrentDictionary用于多线程场景。
缺少&#34;删除&#34;以及&#34; TryRemove&#34;的存在是因为两个不同的线程可能会同时尝试从集合中删除特定项目,但由于显而易见的原因,只有一个人可以这样做。
TryRemove尝试删除该项目,但如果找不到该项目,则不会发生任何异常。