Comparteix a través de


CA2244: No duplicar inicializaciones de elementos indexados

Propiedad Valor
Identificador de la regla CA2244
Título No duplicar inicializaciones de elementos indexados
Categoría Uso
La corrección interrumpe o no interrumpe Sin interrupción
Habilitado de forma predeterminada en .NET 10 Como sugerencia
Idiomas aplicables C# y Visual Basic

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 son sobrescritos por cualquiera de los inicializadores de elemento siguientes. 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 de la lista de opciones que se presenta.

Corrección de código para CA2244: Remove redundant element initializer (Quitar inicializador de elemento redundante)

Cuándo suprimir las advertencias

No suprima las infracciones de esta regla.

Consulte también