如何简化「键存在赋值、不存在添加」的字典操作代码?
简化字典「存在则赋值,不存在则添加」的写法
当然有更简洁的方案!其实你完全没必要写那堆判断逻辑——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
相关产品推荐
相关产品推荐

