Jon*_*han 4 c# concurrency concurrentdictionary
如果我有一个ConcurrentDictionary并且想要使用该Add()函数,我需要转换为IDictionary:
var cd = new ConcurrentDictionary<int, int>();
cd.Add(1, 1);  // Compile error: does not contain a definition for 'Add'
IDictionary<int, int> id = cd;
id.Add(1, 1);  // Works
问题ConcurrentDictionary和IDictionary告诉我这是因为使用私有方法显式ConcurrentDictionary实现IDictionary.
我的问题:为什么是ConcurrentDictionary这样实现的?隐藏使用已实现的接口有什么好处?
我的问题:为什么ConcurrentDictionary实现了那样?
我相信这是鼓励你想到并发的含义 - 多个线程可能同时写入相同的密钥.因此,添加现有密钥不太可能成为编程错误,应该仔细考虑.
AddOrUpdateTryAdd如果您发现自己Add经常需要现有行为,则可以始终编写自己的扩展方法.
| 归档时间: | 
 | 
| 查看次数: | 328 次 | 
| 最近记录: |