在.NET Framework中,有`Dictionary`和`ConcurrentDictionary`。它们提供了像`Add`、`Remove`等方法。
当我们设计多线程程序时,使用`ConcurrentDictionary`来替换`Dictionary`以实现线程安全。
我想知道为什么`ConcurrentDictionary`具有`AddOrUpdate`、`GetOrAdd`等类似的方法,而`Dictionary`没有。
通常我们使用以下代码从`Dictionary`中获取对象:
当我们设计多线程程序时,使用`ConcurrentDictionary`来替换`Dictionary`以实现线程安全。
我想知道为什么`ConcurrentDictionary`具有`AddOrUpdate`、`GetOrAdd`等类似的方法,而`Dictionary`没有。
通常我们使用以下代码从`Dictionary`中获取对象:
var dict = new Dictionary<string, object>();
object tmp;
if (dict.ContainsKey("key"))
{
tmp = dict["key"];
}
else
{
dict["key"] = new object();
tmp = new object();
}
但是当使用ConcurrentDictionary
时,类似的代码只需要一行。
var conDict = new ConcurrentDictionary<string, object>();
var tmp = conDict.GetOrAdd("key", new object());
我期望.NET会有那些方法,但为什么它没有呢?