Compartir a través de


CA2244: No duplicar inicializaciones de elementos indexados

Propiedad Value
Identificador de la regla CA2244
Título No duplicar inicializaciones de elementos indexados
Categoría Uso
La corrección es problemática o no problemática Poco problemático
Habilitado de forma predeterminada en .NET 8 Como sugerencia

Causa

Un inicializador de objeto tiene más de un inicializador de elemento indexado con el mismo índice de constante. Todo los inicializadores menos el último son redundantes.

Descripción de la regla

Los inicializadores de objeto permiten asignar valores a cualquier campo o propiedad accesible de un objeto en el momento de su creación sin tener que invocar un constructor seguido de líneas de instrucciones de asignación.

Los inicializadores de elemento indexados en los inicializadores de objeto deben inicializar elementos únicos. Un índice duplicado sobrescribirá una inicialización de elemento anterior.

Cómo corregir infracciones

Para corregir las infracciones, quite todos los inicializadores de elemento indexados redundantes que se sobrescriben con cualquiera de los inicializadores de elemento subsiguientes. Por ejemplo, el siguiente fragmento de código muestra una infracción de la regla y un par de posibles correcciones:

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

Sugerencia

Hay disponible una corrección de código para esta regla en Visual Studio. Para usarlo, coloque el cursor sobre la infracción y presione Ctrl+. (punto). Elija Quitar inicializador de elemento redundante en la lista de opciones que se muestra.

Code fix for CA2244 - Remove redundant element initializer

Cuándo suprimir las advertencias

No suprima las infracciones de esta regla.

Consulte también