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.
| Vastgoed | Waarde | 
|---|---|
| Regel-id | IDE0306 | 
| Titel | Gebruik collectie-uitdrukking voor nieuw | 
| Categorie | Stijl | 
| Subcategorie | Taalregels (voorkeuren op expressieniveau) | 
| Toepasselijke talen | C# 12+ | 
| Opties | dotnet_style_prefer_collection_expression | 
Overzicht
Deze regel markeert plaatsen waar een verzamelingsexpressie met een verspreid element (..) kan worden gebruikt om een lijst te initialiseren in plaats van new. Deze regel biedt bijvoorbeeld om code zoals new List<...>(x) in het formulier voor verzamelingsexpressies ([.. x]) te vereenvoudigen.
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.
Voorkeur voor collectie-expressie in dotnet_stijl
| Vastgoed | 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.
Voorbeeld
// Code with violation.
List<int> l1 = new List<int>(Enumerable.Range(1, 10));
List<int> m1 = new List<int>(new[] { 1, 2, 3 });
// Fixed code.
List<int> l1 = [.. Enumerable.Range(1, 10)];
List<int> m1 = [.. new[] { 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 IDE0306
// The code that's violating the rule is on this line.
#pragma warning restore IDE0306
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.IDE0306.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
Voor meer informatie, zie Hoe u codeanalysewaarschuwingen kunt onderdrukken.
Zie ook
- Verzamelingsexpressie gebruiken voor matrix (IDE0300)
 - Verzamelingsexpressie gebruiken voor lege verzameling (IDE0301)
 - Verzamelingsexpressie gebruiken voor stackalloc (IDE0302)
 - 
              Verzamelingsexpressie gebruiken voor 
Create()(IDE0303) - Verzamelingsexpressie gebruiken voor opbouwfunctie (IDE0304)
 - Verzamelingsexpressie gebruiken voor fluent (IDE0305)