Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Fastighet | Värde |
|---|---|
| Regel-ID | IDE0221 |
| Titel | Lägg till explicit gjutning |
| Kategori | Stil |
| Underkategori | Språkregler (inställningar på uttrycksnivå) |
| Tillämpliga språk | C# |
| Options | dotnet_style_prefer_non_hidden_explicit_cast_in_source |
Översikt
Den här regeln flaggar explicita typkonverteringar i källkoden där kompilatorn infogar ytterligare en dold explicit typkonvertering. Både synliga och dolda avgjutningar kan misslyckas vid körning av olika orsaker. När den här regeln flaggar sådan kod rekommenderar den att du lägger till den mellanliggande casten explicit i källan för att göra kodens avsikt tydlig.
Om du till exempel skriver (Derived)x där x är av en typ som kräver två explicita konverteringar – först till en bastyp och sedan till den avledda typen – är endast en typomställning synlig i källkoden. Kompilatorn infogar den mellanliggande gjutningen utan någon indikation i källan. Den här regeln föreslår att du skriver båda rollbesättningarna explicit: (Derived)(Base)x.
Alternativ
Alternativ anger det beteende som du vill att regeln ska framtvinga. Information om hur du konfigurerar alternativ finns i Alternativformat.
dotnet_style_prefer_non_hidden_explicit_cast_in_source
| Fastighet | Värde | Beskrivning |
|---|---|---|
| Alternativnamn | dotnet_style_prefer_non_hidden_explicit_cast_in_source | |
| Alternativvärden | true |
Föredrar att göra alla mellanliggande explicita casts synliga i källkoden. |
false |
Föredrar inte att göra alla mellanliggande explicita casts synliga i källkoden. | |
| Standardalternativvärde | true |
Exempel
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();
}
}
Undertryck en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan regeln.
#pragma warning disable IDE0221
// The code that's violating the rule is on this line.
#pragma warning restore IDE0221
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.
[*.cs]
dotnet_diagnostic.IDE0221.severity = none
Om du vill inaktivera alla regler i kodformat anger du allvarlighetsgraden för kategorin Style till none i konfigurationsfilen.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.