Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Propriedade | Valor |
|---|---|
| ID da regra | CA2244 |
| Título | Não duplicar inicializações de elementos indexados |
| Categoria | Usage |
| Correção interruptiva ou sem interrupção | Inquebrável |
| Habilitado por padrão no .NET 10 | Como sugestão |
| Idiomas aplicáveis | C# e Visual Basic |
Causa
Um inicializador de objeto tem mais de um inicializador de elemento indexado com o mesmo índice constante. Todos, exceto o último inicializador, são redundantes.
Descrição da regra
Os inicializadores de objeto permitem atribuir valores a quaisquer campos ou propriedades acessíveis de um objeto na hora de criação sem que seja necessário invocar um construtor seguido por linhas de instruções de atribuição.
Inicializadores de elemento indexado em inicializadores de objetos devem inicializar elementos exclusivos. Um índice duplicado substituirá uma inicialização de elemento anterior.
Como corrigir violações
Para corrigir violações, remova todos os inicializadores de elemento indexados redundantes que são substituídos por qualquer um dos inicializadores de elemento subsequentes. Por exemplo, o snippet de código a seguir mostra uma violação da regra e algumas correções potenciais:
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
};
}
}
Dica
Uma correção de código está disponível para essa regra no Visual Studio. Para usá-la, posicione o cursor sobre a violação e pressione Ctrl+. (ponto). Escolha, na lista de opções apresentada, Remover inicializador de elemento redundante.
Quando suprimir avisos
Não suprima violações para esta regra.