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.
Quando eliminare gli avvisi
Non eliminare le violazioni per questa regola.