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.
Cuándo suprimir las advertencias
No suprima las infracciones de esta regla.