Freigeben über


Auflistungsinitialisierer oder Sammlungsausdrücke verwenden (IDE0028)

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

Übersicht

Diese Stilregel betrifft die Verwendung von Sammlungsinitialisierern und, wenn Sie C# 12 oder höher verwenden, Sammlungsausdrücke für die Sammlungsinitialisierung.

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

Hinweis

Wenn Sie die Codekorrektur in Visual Studio verwenden, kann die Änderung, die sie bietet, sich in einigen Fällen semantisch unterscheiden. 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
Optionsname dotnet_style_collection_initializer
Optionswerte true Die Verwendung von Auflistungsinitialisierern wird bevorzugt.
false Auflistungsinitialisierer nicht vorziehen
Standardwert der Option true

dotnet_style_prefer_collection_expression

Eigenschaft Wert Beschreibung
Optionsname dotnet_style_prefer_collection_expression
Optionswerte true | when_types_exactly_match Verwenden Sie Auflistungsausdrücke nur, wenn Typen exakt übereinstimmen, z. B. List<int> list = new List<int>() { 1, 2 };.
when_types_loosely_match* Bevorzugen Sie die Verwendung von Auflistungsausdrücken, selbst wenn die Typen nur lose übereinstimmen, z. B. IEnumerable<int> list = new List<int>() { 1, 2 };. Der Zieltyp muss mit dem Typ auf der rechten Seite übereinstimmen oder einer der folgenden Typen sein: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>.
false | never Deaktiviert die Regel.
Standardwert der Option when_types_loosely_match*

*Wenn diese Option verwendet wird, kann die Codekorrektur die Semantik Ihres Codes ändern.

(Diese Option gilt nur für C#.)

Beispiele

// IDE0028 violation.
List<int> list = new List<int>() { 1, 2, 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}

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, setzen Sie den Schweregrad in der none auf .

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

Um alle Codestilregeln zu deaktivieren, legen Sie den Schweregrad der Kategorie Style auf none in der Konfigurationsdatei fest.

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

Weitere Informationen finden Sie unter "Unterdrücken von Codeanalysewarnungen".

Weitere Informationen