CA2244: Keine Initialisierungen indizierter Elemente duplizieren

Eigenschaft Wert
Regel-ID CA2244
Titel Keine Initialisierungen indizierter Elemente duplizieren
Kategorie Verwendung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Als Vorschlag

Ursache

Ein Objektinitialisierer verfügt über mehr als einen indizierten Elementinitialisierer mit demselben konstanten Index. Alle bis auf den letzten Initialisierer sind redundant.

Regelbeschreibung

Mit Objektinitialisierern können Sie allen verfügbaren Feldern oder Eigenschaften eines Objekts zum Erstellungszeitpunkt Werte zuweisen, ohne einen Konstruktor aufrufen zu müssen, dem Zeilen mit Zuweisungsanweisungen folgen.

Initialisierer für indizierte Elemente innerhalb von Objektinitialisierern müssen eindeutige Elemente initialisieren. Ein doppelter Index überschreibt eine vorherige Elementinitialisierung.

Behandeln von Verstößen

Um Verstöße zu beheben, entfernen Sie alle redundanten indizierten Elementinitialisierer, die von einem oder mehreren der nachfolgenden Elementinitialisierern überschrieben werden. Der folgende Codeausschnitt zeigt beispielsweise einen Verstoß gegen die Regel sowie einige mögliche Korrekturen (Fixes):

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

Tipp

Für diese Regel ist ein Codefix in Visual Studio verfügbar. Um ihn zu nutzen, muss der Cursor auf dem Verstoß platziert und STRG+. (Punkt) gedrückt werden. Wählen Sie aus der Liste der angezeigten Optionen die Option Redundanten Elementinitialisierer entfernen (Remove redundant element initializer) aus.

Code fix for CA2244 - Remove redundant element initializer

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie die Verstöße gegen diese Regel nicht.

Siehe auch