CA2244 : Ne pas dupliquer les initialisations d’éléments indexés

Propriété Value
Identificateur de la règle CA2244
Titre Ne pas dupliquer les initialisations d’éléments indexés
Catégorie Utilisation
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 À titre de suggestion

Cause

Un initialiseur d’objet a plusieurs initialiseurs d’éléments indexés avec le même index constant. Tous les initialiseurs, à l’exception du dernier sont redondants.

Description de la règle

Les initialiseurs d'objets vous permettent d'affecter des valeurs aux champs ou propriétés accessibles d'un objet, au moment de sa création, sans devoir appeler un constructeur suivi de ses lignes d'instructions d'assignation.

Les initialiseurs d’éléments indexés dans les initialiseurs d’objets doivent initialiser des éléments uniques. Un index dupliqué remplace une initialisation d’élément précédente.

Comment corriger les violations

Pour corriger les violations, supprimez tous les initialiseurs d’éléments indexés redondants qui sont remplacés par l’un des initialiseurs d’éléments ultérieurs. Par exemple, l’extrait de code suivant montre une violation de la règle et quelques correctifs potentiels :

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

Conseil

Un correctif de code est disponible pour cette règle dans Visual Studio. Pour l’utiliser, positionnez le curseur sur la violation et appuyez sur Ctrl+. (point). Choisissez Supprimer l’initialiseur d’élément redondant dans la liste des options présentées.

Code fix for CA2244 - Remove redundant element initializer

Quand supprimer les avertissements

Ne supprimez pas les violations pour cette règle.

Voir aussi