Delen via


Gebruik initialisatieprogramma's of expressies voor verzamelingen (IDE0028)

Eigenschap Waarde
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 initialisatiefunctie voor verzamelingen en, als u C# 12 of hoger gebruikt, verzamelingsexpressies voor de initialisatie van de verzameling.

Als u in .NET 8 (C# 12) en latere versies de optie dotnet_style_prefer_collection_expression hebt ingesteld op true, converteert de code fix in Visual Studio uw initialisatiecode van de verzameling zodat een verzamelingsexpressie (List<int> list = [1, 2, 3];) wordt gebruikt. In Visual Basic en in .NET 7 (C# 11) en eerdere versies, converteert de codefix uw code zodat een initialisatiefunctie voor verzamelingen (List<int> list = new List<int> { 1, 2, 3 };) wordt gebruikt.

Notitie

Als u de oplossing voor code in Visual Studio gebruikt, kan de wijziging in sommige gevallen verschillende semantiek hebben. int[] x = new int[] { } wordt bijvoorbeeld vervangen door int[] x = [];, die iets andere semantiek heeft: de compiler maakt gebruik van 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 Option-indelingvoor meer informatie over het configureren van opties.

dotnet_style_collection_initializer

Eigenschap Waarde Beschrijving
optienaam dotnet_style_collection_initializer
optiewaarden true Gebruik liever initialisatiefunctie voor verzamelingen.
false Geef geen voorkeur aan initialisatie van verzamelingen.
standaardoptiewaarde true

Voorkeur voor collectie-expressie in dotnet_stijl

Eigenschap Waarde Beschrijving
optienaam Voorkeur voor collectie-expressie in dotnet_stijl
optiewaarden true | when_types_exactly_match Gebruik liever alleen verzamelingsexpressies wanneer typen exact overeenkomen, bijvoorbeeld List<int> list = new List<int>() { 1, 2 };.
when_types_loosely_match* Gebruik liever verzamelingsexpressies, zelfs wanneer typen losjes overeenkomen, bijvoorbeeld IEnumerable<int> list = new List<int>() { 1, 2 };. Het doeltype moet overeenkomen met het type aan de rechterkant of een van de volgende typen zijn: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>.
false | never Deactiveert de regel.
standaardoptiewaarde when_types_loosely_match*

*Wanneer deze optie wordt gebruikt, kan de codeoplossing de semantiek van uw code wijzigen.

(Deze optie is alleen van toepassing op C#.)

Voorbeelden

// 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}

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

[*.{cs,vb}]
dotnet_diagnostic.IDE0028.severity = none

Als u alle regels voor de codestijl wilt uitschakelen, stelt u de ernst voor de categorie Style in op none in het configuratiebestand.

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

Zie Codeanalysewaarschuwingen onderdrukkenvoor meer informatie.

Zie ook