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

Resharper提示“添加集合前冗余ContainsKey”,是否需优化?

关于Resharper提示“Redundant dictionary 'ContainsKey' before adding to the collection”的分析

这个提示不用忽略,你的代码确实有优化空间。

你当前的写法里,ContainsKey(key)会先对字典做一次key查找,之后不管是执行[]赋值还是Add操作,又会做一次相同的key查找,等于做了重复的无效工作。

而C#字典的索引器[]本身就自带“存在则覆盖值,不存在则新增键值对”的逻辑,完全不需要提前判断ContainsKey。优化后的代码可以简化成:

var userPref = new Preferences { Key = key, Value = value };
this.preferencesDictionary[key] = userPref;
return this;

当然,如果你的实际业务里,覆盖已有值和新增值需要执行不同的额外操作(比如覆盖时打日志、触发特定事件),那原代码的分支写法是合理的。但就你给出的这段代码而言,简化后的写法更高效也更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:11:57