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 9 | 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 Ctrl+. (kropka). Wybierz pozycję Usuń nadmiarowy inicjator elementu z listy przedstawionych opcji.
Kiedy pomijać ostrzeżenia
Nie pomijaj naruszeń tej reguły.