Verzamelingsexpressie gebruiken voor opbouwfunctie (IDE0304)
Eigenschappen | Weergegeven als |
---|---|
Regel-id | IDE0304 |
Titel | Verzamelingsexpressie gebruiken voor opbouwfunctie |
Categorie | Stijl |
Subcategorie | Taalregels (voorkeuren op expressieniveau) |
Toepasselijke talen | C# 12+ |
Opties | dotnet_style_prefer_collection_expression |
Overzicht
Deze regel markeert plaatsen waar een CreateBuilder()
of vergelijkbare methode wordt aangeroepen om een opbouwfunctietype te maken waarmee elementen worden toegevoegd en ten slotte een verzamelingstype wordt samengesteld dat het CollectionBuilderAttribute kenmerk heeft (bijvoorbeeld door aan te roepen ImmutableArray<T>.Builder.ToImmutable()). In plaats daarvan kan een verzamelingsexpressie ([...]
) worden gebruikt om de verzameling te initialiseren.
Notitie
Deze regel vereist meer recente versies van de onveranderbare API's (bijvoorbeeld System.Collections.Immutable), die zich aanmelden voor het patroon collection-expression.
Opties
Met opties geeft u het gedrag op dat door de regel moet worden afgedwongen. Zie Optieindeling voor meer informatie over het configureren van opties.
dotnet_style_prefer_collection_expression
Eigenschappen | Weergegeven als | Beschrijving |
---|---|---|
Optienaam | dotnet_style_prefer_collection_expression | |
Optiewaarden | true | when_types_exactly_match |
Gebruik liever alleen verzamelingsexpressies wanneer typen exact overeenkomen. |
when_types_loosely_match (.NET 9 en latere versies)* |
Gebruik liever verzamelingsexpressies, zelfs wanneer typen losjes overeenkomen. 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 |
Hiermee schakelt u de regel uit. | |
Standaardoptiewaarde | true in .NET 8when_types_loosely_match in .NET 9 en latere versies |
*De codeoplossing wanneer deze optie wordt gebruikt, kan de semantiek van uw code wijzigen.
Opmerking
// Code with violation.
var builder = ImmutableArray.CreateBuilder<int>();
builder.Add(1);
builder.AddRange(new int[] { 5, 6, 7 });
ImmutableArray<int> i = builder.ToImmutable();
// Fixed code.
ImmutableArray<int> i = [1, .. new int[] { 5, 6, 7 }];
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 IDE0304
// The code that's violating the rule is on this line.
#pragma warning restore IDE0304
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.IDE0304.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.