Leggi in inglese

Condividi tramite


Usare l'espressione di raccolta per il generatore (IDE0304)

Proprietà valore
ID regola IDE0304
Title Usare l'espressione di raccolta per il generatore
Categoria Style
Sottocategoria Regole del linguaggio (preferenze a livello di espressione)
Linguaggi applicabili C# 12+
Opzioni dotnet_style_prefer_collection_expression

Panoramica

Questa regola contrassegna la posizione in cui viene chiamato un CreateBuilder() metodo o simile per creare un tipo di generatore che aggiunge elementi e infine costruisce un tipo di raccolta con l'attributo CollectionBuilderAttribute , ad esempio chiamando ImmutableArray<T>.Builder.ToImmutable(). È invece possibile usare un'espressione di raccolta ([...]) per inizializzare la raccolta.

Nota

Questa regola richiede versioni più recenti delle API non modificabili ,ad esempio System.Collections.Immutable, che accettano il criterio collection-expression.

Opzioni

Le opzioni specificano il comportamento da applicare alla regola. Per informazioni sulla configurazione delle opzioni, vedere Formato delle opzioni.

dotnet_style_prefer_collection_expression

Proprietà valore Descrizione
Nome opzione dotnet_style_prefer_collection_expression
Valori delle opzioni true | when_types_exactly_match Preferisce usare espressioni di raccolta solo quando i tipi corrispondono esattamente.
when_types_loosely_match
(.NET 9 e versioni successive)*
Preferisce usare espressioni di raccolta anche quando i tipi corrispondono in modo libero. Il tipo di destinazione deve corrispondere al tipo sul lato destro o essere uno dei tipi seguenti: IEnumerable<T>, ICollection<T>IList<T>, IReadOnlyCollection<T>. IReadOnlyList<T>
false | never Disabilita la regola.
Valore dell'opzione predefinito true in .NET 8
when_types_loosely_match in .NET 9 e versioni successive

*La correzione del codice quando questa opzione viene usata potrebbe modificare la semantica del codice.

Esempio

C#
// 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 }];

Eliminare un avviso

Se si desidera eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

C#
#pragma warning disable IDE0304
// The code that's violating the rule is on this line.
#pragma warning restore IDE0304

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per disabilitare tutte le regole in stile codice, impostare la gravità per la categoria Style su none nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedi anche