CA2244: Duplicera inte indexerade elementinitieringar

Egenskap Värde
Regel-ID CA2244
Title Duplicera inte indexerade elementinitieringar
Kategori Användning
Korrigeringen är antingen invasiv eller icke-invasiv Oumbrytbar
Aktiverad som standard i .NET 10 Som förslag
Tillämpliga språk C# och Visual Basic

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

Tips

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å felet, tryck sedan på Ctrl+. (punkt). Välj Ta bort redundanta elementinitierare från listan med alternativ som visas.

Kodfix för CA2244 – Ta bort överflödig elementinitierare

När du ska ignorera varningar

Undertryck inte överträdelser av den här regeln.

Se även