Freigeben über


CA2244: Keine Initialisierungen indizierter Elemente duplizieren

Eigenschaft Wert
Regel-ID CA2244
Titel Keine doppelten Initialisierungen von indizierten Elementen
Kategorie Verwendung
Fix führt zu Unterbrechungen oder bleibt funktionsfähig Untrennbar
Standardmäßig in .NET 10 aktiviert Als Vorschlag
Anwendbare Sprachen C# und Visual Basic

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.

So beheben Sie Verstöße

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 es zu verwenden, positionieren Sie den Cursor auf dem Verstoß und drücken Sie STRG+. (Punkt). Wählen Sie aus der Liste der angezeigten Optionen die Option Redundanten Elementinitialisierer entfernen (Remove redundant element initializer) aus.

Codefix für CA2244 - Redundanten Elementinitialisierer entfernen

Wann sollten Warnungen unterdrückt werden?

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

Siehe auch