CA2244: Neduplikujte inicializace indexovaných prvků

Vlastnost Hodnota
ID pravidla CA2244
Název Neduplikujte inicializace indexovaných elementů.
Kategorie Využití
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 Jako návrh

Příčina

Inicializátor objektů má více než jeden inicializátor indexovaného prvku se stejným konstantním indexem. Všechny kromě posledního inicializátoru jsou redundantní.

Popis pravidla

Inicializátory objektů umožňují přiřazovat hodnoty ke všem přístupným polím nebo vlastnostem objektu při vytváření, aniž byste museli vyvolat konstruktor následovaný řádky příkazů přiřazení.

Inicializátory indexovaných elementů v inicializátorech objektů musí inicializovat jedinečné prvky. Duplicitní index přepíše předchozí inicializaci elementu.

Jak opravit porušení

Chcete-li opravit porušení, odeberte všechny redundantní indexované inicializátory elementů, které jsou přepsány některou z následujících inicializátorů prvků. Například následující fragment kódu ukazuje porušení pravidla a několik možných oprav:

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
        };
    }
}

Tip

Oprava kódu je k dispozici pro toto pravidlo v sadě Visual Studio. Pokud ho chcete použít, umístěte kurzor na porušení a stiskněte ctrl+. (tečka). V seznamu zobrazených možností zvolte Odebrat redundantní inicializátor elementu.

Code fix for CA2244 - Remove redundant element initializer

Kdy potlačit upozornění

Nepotlačujte porušení tohoto pravidla.

Viz také