CA2244: Duplicera inte indexerade elementinitieringar
Property | Värde |
---|---|
Regel-ID | CA2244 |
Title | Duplicera inte indexerade elementinitieringar |
Kategori | Användning |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Som förslag |
Orsak
En objektinitierare har mer än en indexerad elementinitierare med samma konstanta index. Alla utom den sista initieraren är redundanta.
Regelbeskrivning
Med objektinitierare kan du tilldela värden till tillgängliga fält eller egenskaper för ett objekt vid skapandetillfället utan att behöva anropa en konstruktor följt av rader med tilldelningsuttryck.
Indexerade elementinitierare i objektinitierare måste initiera unika element. Ett duplicerat index skriver över en tidigare elementinitiering.
Så här åtgärdar du överträdelser
Åtgärda överträdelser genom att ta bort alla redundanta indexerade elementinitierare som skrivs över av någon av de efterföljande elementinitierarna. Följande kodfragment visar till exempel ett brott mot regeln och några möjliga korrigeringar:
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
};
}
}
Dricks
En kodkorrigering är tillgänglig för den här regeln i Visual Studio. Om du vill använda den placerar du markören på överträdelsen och trycker på Ctrl+. (punkt). Välj Ta bort redundant elementinitierare i listan över alternativ som visas.
När du ska ignorera varningar
Undertryck inte överträdelser för den här regeln.