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 |
// 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.
#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 .
[*.{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 .
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.