通过


CA2244: 请勿重复初始化已索引的元素

属性
规则 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+.(句点)"。 从显示的选项列表中选择“删除冗余的元素初始值设定项”。

CA2244 的代码修复 - 删除冗余的元素初始值设定项

何时禁止显示警告

请勿抑制此规则的违反行为。

另请参阅