Share via


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 8 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.

Code fix for CA2244 - Remove redundant element initializer

När du ska ignorera varningar

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

Se även