Partilhar via


CA2244: Não duplicar inicializações de elementos indexados

Propriedade valor
ID da regra CA2244
Título Não duplicar inicializações de elementos indexados
Categoria Utilização
A correção causa interrupção ou não Ininterrupto
Habilitado por padrão no .NET 10 Como sugestão
Línguas aplicáveis C# e Visual Basic

Motivo

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 no momento da criação sem ter que invocar um construtor seguido por linhas de instruções de atribuição.

Os inicializadores de elementos indexados em inicializadores de objeto 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 elementos indexados redundantes que são substituídos por qualquer um dos inicializadores de elementos subsequentes. Por exemplo, o trecho de código a seguir mostra uma violação da regra e algumas correções possíveis:

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

Gorjeta

Uma correção de código está disponível para essa regra no Visual Studio. Para utilizá-lo, posicione o cursor sobre a violação e pressione Ctrl+. Escolha Remover inicializador de elemento redundante na lista de opções apresentada.

Correção no código para CA2244 - Eliminar inicializador de elemento redundante

Quando suprimir avisos

Não reprima violações a esta regra.

Consulte também