Condividi tramite


CA2244: Non duplicare le inizializzazioni degli elementi indicizzati

Proprietà valore
ID regola CA2244
Title Non duplicare inizializzazioni di elementi indicizzati
Categoria Utilizzo
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 Come suggerimento

Causa

Un inizializzatore di oggetto ha più di un inizializzatore di elementi indicizzati con lo stesso indice costante. Tutto ma l'ultimo inizializzatore è ridondante.

Descrizione regola

Gli inizializzatori di oggetti consentono di assegnare valori a qualsiasi campo o proprietà accessibile di un oggetto in fase di creazione senza dover richiamare un costruttore seguito da righe di istruzioni di assegnazione.

Gli inizializzatori di elementi indicizzati negli inizializzatori di oggetto devono inizializzare elementi univoci. Un indice duplicato sovrascriverà un'inizializzazione dell'elemento precedente.

Come correggere le violazioni

Per correggere le violazioni, rimuovere tutti gli inizializzatori di elementi indicizzati ridondanti sovrascritti da uno o più inizializzatori di elemento successivi. Ad esempio, il frammento di codice seguente mostra una violazione della regola e un paio di possibili correzioni:

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

Suggerimento

Una correzione del codice è disponibile per questa regola in Visual Studio. Per usarlo, posizionare il cursore sulla violazione e premere CTRL+. (punto). Scegliere Rimuovi inizializzatore di elementi ridondanti dall'elenco di opzioni presentate.

Code fix for CA2244 - Remove redundant element initializer

Quando eliminare gli avvisi

Non eliminare le violazioni per questa regola.

Vedi anche