You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化「键存在赋值、不存在添加」的字典操作代码?

简化字典「存在则赋值,不存在则添加」的写法

当然有更简洁的方案!其实你完全没必要写那堆判断逻辑——C#的Dictionary<TKey, TValue>本身就内置了你要的行为:

dict[key] = value;

这一行就搞定所有需求:

  • 当key已经存在于字典中时,会直接覆盖对应的旧值;
  • 当key不存在时,会自动把这个新的键值对添加进字典。

特殊场景的补充方案

如果你的业务场景有额外需求(比如需要知道操作前键是否存在,或者要在多线程环境下操作),可以参考这些写法:

  • 需要判断添加是否成功(.NET Core 2.0+/NET Framework 4.7.2+ 可用):
    用TryAdd先尝试添加,失败(键已存在)再执行赋值:
    if (!dict.TryAdd(key, value)) dict[key] = value;
    
    这个写法和你原来的逻辑完全一致,但更紧凑,适合需要获取操作结果的场景。
  • 多线程环境下的线程安全操作:
    改用ConcurrentDictionary<TKey, TValue>的AddOrUpdate方法,既能实现需求又保证线程安全:
    concurrentDict.AddOrUpdate(key, value, (existingKey, oldValue) => value);
    

内容的提问来源于stack exchange,提问作者SirMt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:47:39