Initialisatieprogramma's of expressies voor verzamelingen gebruiken (IDE0028)
Eigenschappen | Weergegeven als |
---|---|
Regel-id | IDE0028 |
Titel | Initialisatiefunctie voor verzamelingen gebruiken |
Categorie | Stijl |
Subcategorie | Taalregels (voorkeuren op expressieniveau) |
Toepasselijke talen | C# en Visual Basic |
Opties | dotnet_style_collection_initializer |
dotnet_style_prefer_collection_expression |
Overzicht
Deze stijlregel betreft het gebruik van initialisatie van verzamelingen en, als u C# 12 of hoger gebruikt, verzamelingsexpressies voor de initialisatie van de verzameling.
In .NET 8 (C# 12) en latere versies, als u de dotnet_style_prefer_collection_expression
optie hebt ingesteld true
, converteert de codefixer in Visual Studio de initialisatiecode van uw verzameling om een verzamelingsexpressie (List<int> list = [1, 2, 3];
) te gebruiken. In Visual Basic en in .NET 7 (C# 11) en eerdere versies converteert de codefixer uw code om een verzamelings-initializer (List<int> list = new List<int> { 1, 2, 3 };
) te gebruiken.
Notitie
Als u de codefixer in Visual Studio gebruikt, kan de wijziging die het biedt, in sommige gevallen verschillende semantiek hebben. Wordt bijvoorbeeld int[] x = new int[] { }
vervangen door int[] x = [];
, wat iets andere semantiek heeft: de compiler gebruikt een singleton voor x
in plaats van een nieuw exemplaar te maken.
Opties
Stel de waarden van de bijbehorende opties voor deze regel in om op te geven of initialisatie- en verzamelingsexpressies de voorkeur hebben bij het initialiseren van verzamelingen.
Zie Optieindeling voor meer informatie over het configureren van opties.
dotnet_style_collection_initializer
Eigenschappen | Weergegeven als | Beschrijving |
---|---|---|
Optienaam | dotnet_style_collection_initializer | |
Optiewaarden | true |
Gebruik liever initialisatiefunctie voor verzamelingen. |
false |
Geef geen voorkeur aan initialisatie van verzamelingen. | |
Standaardoptiewaarde | true |
dotnet_style_prefer_collection_expression (alleen C#)
Eigenschappen | Weergegeven als | Beschrijving |
---|---|---|
Optienaam | dotnet_style_prefer_collection_expression | |
Optiewaarden | true |
Gebruik liever verzamelingsexpressies. |
false |
Geef geen voorkeur aan verzamelingsexpressies. | |
Standaardoptiewaarde | true |
Voorbeelden
// 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}
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable IDE0028
// The code that's violating the rule is on this line.
#pragma warning restore IDE0028
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.IDE0028.severity = none
Als u alle regels voor codestijl wilt uitschakelen, stelt u de ernst voor de categorie Style
none
in op in het configuratiebestand.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.