CA2244: Nie duplikuj inicjalizacji indeksowanych elementów

Właściwości Wartość
Identyfikator reguły CA2244
Tytuł Nie duplikuj inicjowania indeksowanych elementów
Kategoria Użycie
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Jako sugestia

Przyczyna

Inicjator obiektu ma więcej niż jeden indeksowany inicjator elementu z tym samym indeksem stałej. Wszystkie oprócz ostatniego inicjatora są nadmiarowe.

Opis reguły

Inicjatory obiektów umożliwiają przypisywanie wartości do dowolnych dostępnych pól lub właściwości obiektu w czasie tworzenia bez konieczności wywoływania konstruktora, po którym następuje wiersze instrukcji przypisania.

Indeksowane inicjatory elementów w inicjatorach obiektów muszą inicjować unikatowe elementy. Zduplikowany indeks zastąpi inicjację poprzedniego elementu.

Jak naprawić naruszenia

Aby naprawić naruszenia, usuń wszystkie nadmiarowe inicjatory elementów indeksowanych, które są zastępowane przez dowolny z kolejnych inicjatorów elementów. Na przykład poniższy fragment kodu przedstawia naruszenie reguły i kilka potencjalnych poprawek:

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

Napiwek

Poprawka kodu jest dostępna dla tej reguły w programie Visual Studio. Aby go użyć, umieść kursor na naruszeniu i naciśnij klawisze Ctrl+. (kropka). Wybierz pozycję Usuń nadmiarowy inicjator elementu z listy przedstawionych opcji.

Code fix for CA2244 - Remove redundant element initializer

Kiedy pomijać ostrzeżenia

Nie pomijaj naruszeń tej reguły.

Zobacz też