Share via


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 Stylenone in op in het configuratiebestand.

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

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Zie ook