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.
Quand supprimer les avertissements
Ne supprimez pas les violations pour cette règle.