Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.