考虑以下代码:
ConcurrentDictionary<string, object> error = new ConcurrentDictionary<string, object>();
error.Add("hello", "world"); //actually throws a compiler error
并且
IDictionary<string, object> noError = new ConcurrentDictionary<string, object>();
noError.Add("hello", "world");
最终,我弄清楚只需更改IL即可将Add
函数设置为私有。
现在,在分离的代码精神中,我很可能会使用接口,但似乎并不太适用于Concurrent dictionary 的 Add
方法。
使用Add
是否安全(我无法查看IL,因此不知道它是否真正是线程安全的)?还是应该使用ConcurrentDictionary<TKey,TValue>
的具体类型,并显式地使用TryAdd
。