Auflistungsinitialisierer oder Sammlungsausdrücke verwenden (IDE0028)

Eigenschaft Wert
Regel-ID IDE0028
Titel Verwenden des Auflistungsinitialisierers
Kategorie Stil
Unterkategorie Sprachregeln (Einstellungen auf Ausdrucksebene)
Gültige Sprachen C# und Visual Basic
Optionen dotnet_style_collection_initializer
dotnet_style_prefer_collection_expression

Überblick

Diese Stilregel betrifft die Verwendung von Auflistungsinitialisierern und – bei Verwendung von C# 12 oder höher – Sammlungsausdrücken für die Auflistungsinitialisierung.

In .NET 8 (C# 12) und höheren Versionen konvertiert der Codefix in Visual Studio Ihren Sammlungsinitialisierungscode in die Verwendung eines Sammlungsausdrucks (List<int> list = [1, 2, 3];), wenn Sie die Option dotnet_style_prefer_collection_expression auf true festgelegt haben. In Visual Basic sowie in .NET 7 (C# 11) und früheren Versionen konvertiert der Codefix Ihren Code in die Verwendung eines Auflistungsinitialisierers (List<int> list = new List<int> { 1, 2, 3 };).

Hinweis

Wenn Sie den Codefix in Visual Studio verwenden, kann die bereitgestellte Änderung in einigen Fällen unterschiedliche Semantik aufweisen. So wird beispielsweise int[] x = new int[] { } durch int[] x = []; mit einer etwas anderen Semantik ersetzt: Der Compiler verwendet ein Singleton für x, anstatt eine neue Instanz zu erstellen.

Optionen

Legen Sie den Wert der zugehörigen Option für diese Regel fest, um anzugeben, ob Auflistungsinitialisierer und Sammlungsausdrücke beim Initialisieren von Auflistungen bevorzugt werden.

Weitere Informationen zum Konfigurieren von Optionen finden Sie unter Optionsformat.

dotnet_style_collection_initializer

Eigenschaft Wert Beschreibung
Name der Option dotnet_style_collection_initializer
Optionswerte true Die Verwendung von Auflistungsinitialisierern wird bevorzugt.
false Auflistungsinitialisierer nicht vorziehen
Standardoptionswert true

dotnet_style_prefer_collection_expression (nur C#)

Eigenschaft Wert Beschreibung
Name der Option dotnet_style_prefer_collection_expression
Optionswerte true Die Verwendung von Sammlungsausdrücken wird bevorzugt.
false Sammlungsausdrücke nicht bevorzugen
Standardoptionswert true

Beispiele

// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// Fixed code (with dotnet_style_prefer_collection_expression = true)
List<int> list = [1, 2, 3];
' IDE0028 violation.
Dim list = New List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

' Fixed code.
Dim list = New List(Of Integer) From {1, 2, 3}
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// Fixed code.
List<int> list = new List<int>
{
    1,
    2,
    3
};
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.AddRange(new[] { 5, 6, 7 });

// Fixed code.
List<int> list = [1, .. new[] { 5, 6, 7 }];
' IDE0028 violation.
Dim list = New List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

' Fixed code.
Dim list = New List(Of Integer) From {1, 2, 3}

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

#pragma warning disable IDE0028
// The code that's violating the rule is on this line.
#pragma warning restore IDE0028

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none fest.

[*.{cs,vb}]
dotnet_diagnostic.IDE0028.severity = none

Um alle Regeln im Code-Stil zu deaktivieren, setzen Sie den Schweregrad für die Kategorie in der KonfigurationsdateiStyle auf none.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch