Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Proprietà | Valore |
|---|---|
| Regola ID | IDE0221 |
| Titolo | Aggiungere cast esplicito |
| Categoria | Stile |
| Sottocategoria | Regole del linguaggio (preferenze a livello di espressione) |
| Linguaggi applicabili | C# |
| Opzioni | dotnet_style_prefer_non_hidden_explicit_cast_in_source |
Informazioni generali
Questa regola contrassegna i cast espliciti nel codice sorgente in cui il compilatore inserisce un cast esplicito nascosto aggiuntivo. Sia i cast visibili che i cast nascosti possono non riuscire in fase di esecuzione per diversi motivi. Quando questa regola contrassegna tale codice, consiglia di aggiungere il cast intermedio in modo esplicito nell'origine per rendere chiara la finalità del codice.
Ad esempio, se si scrive (Derived)x dove x è di un tipo che richiede due conversioni esplicite, prima in un tipo di base e poi in un tipo derivato, è visibile solo un cast nel codice sorgente. Il compilatore inserisce il cast intermedio senza alcuna indicazione nell'origine. Questa regola suggerisce di scrivere entrambi i cast in modo esplicito: (Derived)(Base)x.
Options
Le opzioni specificano il comportamento che la regola deve imporre. Per informazioni sulla configurazione delle opzioni, vedere Formato delle opzioni.
dotnet_style_prefer_non_hidden_explicit_cast_in_source
| Proprietà | Valore | Descrizione |
|---|---|---|
| Nome opzione | dotnet_style_prefer_non_hidden_explicit_cast_in_source | |
| Valori delle opzioni | true |
Preferisce rendere visibili tutti i cast espliciti intermedi nel codice sorgente. |
false |
Non si preferisce rendere visibili tutti i cast espliciti intermedi nel codice sorgente. | |
| Valore dell'opzione predefinito | true |
Esempio
class Base { }
class Derived : Base { }
class Castable
{
public static explicit operator Base(Castable c) => new Base();
}
class C
{
void M()
{
// Code with violation: the compiler inserts a hidden (Base) cast.
var v = (Derived)new Castable();
// Fixed code: both casts are explicit in source.
var v2 = (Derived)(Base)new Castable();
}
}
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 IDE0221
// The code that's violating the rule is on this line.
#pragma warning restore IDE0221
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .
[*.cs]
dotnet_diagnostic.IDE0221.severity = none
Per disabilitare tutte le regole in stile codice, impostare la gravità per la categoria Style su none nel file di configurazione.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.