gpt4 book ai didi

c# - 为什么并发词典没有可见的 Add() 方法?

转载 作者:太空狗 更新时间:2023-10-29 19:59:54 27 4
gpt4 key购买 nike

我只是想知道 ConcurrentDictionary 怎么可能没有在 Visual Studio IDE 中可见的 Add 方法。我似乎只得到 TryX 方法,例如 TryAdd、TryUpdate 等。

我可以看到 ConcurrentDictionary 实现了 IDictionary,如果我将它转换为 IDictionary,我会返回 Add 方法。

我已经通过 iLSpy 查看了该类,我可以看到 Add 方法已完全实现,并且确实在后台调用了 Concurrent TryAdd 方法。

我期待在 Add 方法上看到某种属性来抑制它,但我什么也没看到。

这是否已被 Microsoft 烘焙到 IDE 中以默认隐藏 Add 方法??

如果有人能对此有所了解,我们将不胜感激

最佳答案

他们不鼓励使用 Add 方法,因为如果键已经存在于字典中,该方法会抛出异常。对于大多数字典,开发者可以通过编写代码来保证在任何正常情况下都不会抛出异常。但是,要对 concurrent 字典执行此操作(Contains 后跟 Add),您需要在访问字典的方法中使用独占锁,这违背了并发字典的全部目的。

TryAdd 结合了 ContainsAdd 检查,无需您锁定字典,并允许您再次编写不会出错的代码正常场景不抛异常。

关于c# - 为什么并发词典没有可见的 Add() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15829050/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com