.NET Core中Dictionary<TKey,TValue>.TryAdd方法的作用是什么?
Dictionary<TKey,TValue>.TryAdd(TKey, TValue) 方法详解
核心作用
- 尝试将指定的键值对添加到字典中,遇到重复键时不会抛出异常
- 方法返回布尔值:添加成功返回
true;字典中已存在相同键时,操作不执行,返回false
等价实现逻辑
你可以理解为该方法是对普通Add操作的安全封装,非原子场景下的等价代码如下:
public bool TryAdd(TKey key, TValue value) { if (!ContainsKey(key)) { Add(key, value); return true; } return false; }
和手动写上述逻辑相比,原生TryAdd有两个明显优势:
- 性能更好:手动实现需要做两次哈希查找(一次判断是否存在、一次插入),TryAdd内部仅做一次查找即可完成判断和插入操作
- 不需要额外处理异常:直接调用Add方法遇到重复键会抛出
ArgumentException,使用TryAdd只需要判断返回值即可,无需额外的try-catch包裹
补充说明
你之前在corefx仓库找不到Dictionary源码是正常的,该仓库已经是归档状态,现在.NET的基础类库实现已经全部迁移到新的统一代码仓库中。
内容的提问来源于stack exchange,提问作者Arnab Chakravorty
相关产品推荐
相关产品推荐

