Luc*_*ano 6 .net c# concurrency thread-safety
从ConcurrentDictionary到IDictionary的转换是否会切断线程安全的实现,因为IDictionary没有GetOrAdd和AddOrUpdate方法?
Dmi*_*nik 10
生成的对象仍然是并发字典.像Add或Remove这样的调用使用底层实现TryAdd和TryRemove(它们是线程安全的).将对象转换为其他类型不会更改对象本身.
另外,为了澄清,你可以使用像ILSpy这样的工具来查看默认IDictionary方法的实现是什么,以及它们是否仍然是线程安全的.
IDictionary只是一个界面.如果转换为它,结果是ConcurrentDictionary的实现,缺少GetOrAdd和AddOrUpdate方法.
据推测,你仍然可以使用Item属性和 Add与ContainsKey方法(代替的GetOrAdd和AddOrUpdate)方法,以及你的铸造对象仍然是线程安全的(因为底层实现是ConcurrentDictionary).