Lägg till explicit cast (IDE0221)

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.

Se även