Resharper 检查问题“添加到集合之前存在冗余字典‘ContainsKey’”

问题描述 投票:0回答:1

Resharper 抛出此检查问题:

添加到集合之前的冗余字典“ContainsKey”

在这部分代码:

var userPref = new Preferences { Key = key, Value = value };

if (this.preferencesDictionary.ContainsKey(key))
{
    this.preferencesDictionary[key] = userPref;
}
else
{
    this.preferencesDictionary.Add(key, userPref);
}

return this;

我真的不认为这是多余的。这是一个我应该跳过的错误?或者说这里真的有改进吗?

c# .net dictionary resharper code-inspection
1个回答
6
投票

当未找到键时,

Dictionary<TKey, TValue>
的索引器的 getter 会抛出
KeyNotFoundException
,而如果未找到键,setter 会将值插入到字典中。

演示

请参阅此处的文档

房产价值

与指定键关联的值。如果指定的键是 未找到,get 操作会抛出

KeyNotFoundException
,以及 set 操作使用指定的键创建一个新元素。

preferencesDictionary[key]
看起来你在这里调用了getter,但由于它后面跟着赋值运算符
=
,所以你实际上是在调用setter。

© www.soinside.com 2019 - 2024. All rights reserved.