我只是想知道ConcurrentDictionary有没有可能在Visual Studio IDE中看到的Add方法。我似乎只接受了TryX方法,例如TryAdd,TryUpdate等。
我可以看到ConcurrentDictionary
实现了IDictionary
,如果我将其转换为IDictionary
,我会收到添加方法。
我已经通过iLSpy查看了这个类,我可以看到Add方法已经完全实现,并且确实调用了引用的并发TryAdd
方法。
我期待在Add方法上看到某种属性来压制它,但我没有看到任何东西。
Microsoft是否已将其烘焙到IDE中以隐藏Add方法?
如果有人能对此有所了解,我们将不胜感激
答案 0 :(得分:8)
他们不鼓励使用Add
方法,因为如果密钥已存在于字典中,则该方法会抛出异常。对于大多数字典,开发人员可以编写代码以保证在任何正常情况下都不会抛出异常。但是,要使用并发字典执行此操作(Contains
后跟Add
),您需要在访问字典的方法中使用排他锁,这会破坏整个目的并发字典。
TryAdd
结合了Contains
和Add
检查,无需您锁定字典,并允许您再次编写在正常情况下不会引发异常的代码。 / p>
答案 1 :(得分:7)