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.