这种方法线程是否安全

时间:2015-02-06 20:43:08

标签: c# multithreading concurrentdictionary

接近线程安全吗?我知道ConcurrentDictionary提供了TryRemove方法,但我只是不喜欢有一个我永远不会使用的值的变量。

ConcurrentDictionary<int, int> myDict = new ConcurrentDictionary<int, int>();

if (myDict.ContainsKey(1))
    ((IDictionary<int, int>)myDict).Remove(1);

1 个答案:

答案 0 :(得分:4)

您的目标似乎是通过消除使用out参数的需要来提高代码清晰度。这是一个有效的问题,但使用Remove并不是正确的方法。

定义一个帮助方法:

static bool TryRemove<TKey, Value>(
      this ConcurrentDictionary<TKey, Value> dict, TKey key) {
 TValue value;
 return dict.TryRemove(key, out value);
}