Leggi in inglese

Condividi tramite


Usare il pattern matching per evitare il controllo 'is' seguito da un cast (IDE0020 e IDE0038)

Questo articolo descrive due regole correlate, IDE0020 e IDE0038.

Proprietà Valore
ID regola IDE0020
Titolo Utilizzare il pattern matching per evitare il controllo is seguito da un cast (con variabile)
Categoria Stile
sottocategoria Regole della lingua (preferenze di corrispondenza di modelli)
lingue applicabili C#
Opzioni csharp_style_pattern_matching_over_is_with_cast_check
Proprietà Valore
ID regola IDE0038
titolo Usare la corrispondenza di modelli per evitare il controllo is seguito da un cast (senza variabile)
categoria Stile
sottocategoria Regole della lingua (preferenze di corrispondenza di schema)
lingue applicabili C#
Opzioni csharp_style_pattern_matching_over_is_with_cast_check

Panoramica

Questa regola di stile riguarda l'uso di C# criteri di ricerca, ad esempio o is int i, su un controllo di is seguito da un cast, ad esempio if (o is int) { ... (int)o ... }. Abilitare IDE0020 o IDE0038 in base al fatto che l'espressione cast debba essere salvata in una variabile locale separata:

  • IDE0020: L'espressione di cast viene salvata in una variabile locale. Ad esempio, if (o is int) { var i = (int)o; } salva il risultato di (int)o in una variabile locale.
  • IDE0038: L'istruzione di cast non è salvata in una variabile locale. Ad esempio, if (o is int) { if ((int)o == 1) { ... } } non salva il risultato di (int)o in una variabile locale.

Opzioni

Impostare il valore dell'opzione associata per questa regola per specificare se è preferibile il pattern matching o il controllo is seguito da un cast di tipo.

Per altre informazioni sulla configurazione delle opzioni, vedere Formato opzione.

csharp_style_pattern_matching_over_is_with_cast_check

Proprietà Valore Descrizione
nome opzione stile_csharp_associazione_per_schemi_sopra_is_con_controllo_cast
valori di opzione true Preferisci il pattern matching anziché is espressioni con casting di tipo.
false Disabilita la regola.
valore di opzione predefinito true
C#
// csharp_style_pattern_matching_over_is_with_cast_check = true
if (o is int i) {...}

// csharp_style_pattern_matching_over_is_with_cast_check = false
if (o is int) {var i = (int)o; ... }

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 IDE0020 // Or IDE0038
// The code that's violating the rule is on this line.
#pragma warning restore IDE0020 // Or IDE0038

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

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

Per disabilitare tutte le regole di tipo 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.

Vedere anche