Udostępnij za pośrednictwem


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 łamiąca lub nienaruszająca Niezgodność
Domyślnie włączone na platformie .NET 10 Jako sugestia
Zastosowane języki C# i Visual Basic

Przyczyna

Inicjator obiektu ma więcej niż jeden indeksowany inicjator elementu z takim samym stałym indeksem. Wszystkie inicjalizatory oprócz ostatniego są zbędne.

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

Wskazówka

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

Poprawka kodu dla CA2244 — usunięcie zbędnego inicjatora elementu

Kiedy pomijać ostrzeżenia

Nie pomijaj naruszeń tej reguły.

Zobacz też