Använda insamlingsinitierare eller uttryck (IDE0028)
Property | Värde |
---|---|
Regel-ID | IDE0028 |
Title | Använda insamlingsinitierare |
Kategori | Format |
Underkategori | Språkregler (inställningar på uttrycksnivå) |
Tillämpliga språk | C# och Visual Basic |
Alternativ | dotnet_style_collection_initializer |
dotnet_style_prefer_collection_expression |
Översikt
Den här formatregeln gäller användningen av insamlingsinitierare och, om du använder C# 12 eller senare, samlingsuttryck för insamlingsinitiering.
I .NET 8 (C# 12) och senare versioner dotnet_style_prefer_collection_expression
true
konverterar kodkorrigeringen i Visual Studio din initieringskod för att använda ett samlingsuttryck (List<int> list = [1, 2, 3];
). I Visual Basic och i .NET 7 (C# 11) och tidigare versioner konverterar kodkorrigeringen koden till att använda en insamlingsinitierare (List<int> list = new List<int> { 1, 2, 3 };
).
Kommentar
Om du använder kodkorrigeringen i Visual Studio kan ändringen den erbjuder ha olika semantik i vissa fall. Ersätts till exempel int[] x = new int[] { }
med int[] x = [];
, som har något olika semantik – kompilatorn använder en singleton för i stället för x
att skapa en ny instans.
Alternativ
Ange värdena för de associerade alternativen för den här regeln för att ange om insamlingsinitierare och samlingsuttryck ska föredras vid initiering av samlingar.
Mer information om hur du konfigurerar alternativ finns i Alternativformat.
dotnet_style_collection_initializer
Property | Värde | beskrivning |
---|---|---|
Alternativnamn | dotnet_style_collection_initializer | |
Alternativvärden | true |
Föredrar att använda insamlingsinitierare. |
false |
Föredrar inte insamlingsinitierare. | |
Standardalternativvärde | true |
dotnet_style_prefer_collection_expression (endast C#)
Property | Värde | beskrivning |
---|---|---|
Alternativnamn | dotnet_style_prefer_collection_expression | |
Alternativvärden | true |
Föredrar att använda samlingsuttryck. |
false |
Föredrar inte samlingsuttryck. | |
Standardalternativvärde | true |
Exempel
// 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}
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan regeln.
#pragma warning disable IDE0028
// The code that's violating the rule is on this line.
#pragma warning restore IDE0028
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.IDE0028.severity = none
Om du vill inaktivera alla regler i kodformat anger du allvarlighetsgraden för kategorin Style
till i konfigurationsfilen.none
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för