| 属性 | 值 |
|---|---|
| 规则 ID | CA2244 |
| 标题 | 不要复制已索引的元素初始化 |
| 类别 | 使用情况 |
| 修复会引起中断还是不会引起中断 | 非中断 |
| 在 .NET 10 中默认启用 | 作为一种建议 |
| 适用的语言 | C# 和 Visual Basic |
原因
对象初始值设定项包含多个索引元素初始值设定项,并且这些元素具有相同的常量索引。 除最后一个初始值设定项之外,其余都是冗余的。
规则说明
使用对象初始值设定项,你可以在创建对象时向对象的任何可访问字段或属性分配值,而无需调用后跟赋值语句行的构造函数。
对象初始值设定项中的索引元素初始值设定项须初始化具有唯一性的元素。 重复的索引会覆盖之前的元素初始化。
如何解决违规
要修复违规,请删除所有被后续元素初始值设定项覆盖的冗余索引元素初始值设定项。 例如,以下代码片段显示了规则冲突和几种可能的修复方法:
using System.Collections.Generic;
class C
{
public void M()
{
var dictionary = new Dictionary<int, int>
{
[1] = 1, // CA2244
[2] = 2,
[1] = 3
};
}
}
using System.Collections.Generic;
class C
{
public void M()
{
var dictionary = new Dictionary<int, int>
{
[2] = 2,
[1] = 3
};
}
}
using System.Collections.Generic;
class C
{
public void M()
{
var dictionary = new Dictionary<int, int>
{
[1] = 1,
[2] = 2
};
}
}
提示
Visual Studio 中为此规则提供了代码修补程序。 若要使用它,请将光标置于违规上,然后按 "Ctrl
何时禁止显示警告
请勿抑制此规则的违反行为。