Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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".