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
相关产品推荐
相关产品推荐

