Přidání explicitního přetypování (IDE0221)

Vlastnictví Hodnota
Identifikátor pravidla IDE0221
Titul Přidej explicitní přetypování
Kategorie Styl
Podkategorie Jazyková pravidla (předvolby na úrovni výrazu)
Příslušné jazyky jazyk C#
Options dotnet_style_prefer_non_hidden_explicit_cast_in_source

Přehled

Toto pravidlo označí explicitní přetypování ve zdrojovém kódu, kde kompilátor vloží další skryté explicitní přetypování. Viditelné i skryté přetypování mohou selhat při běhu z různých důvodů. ** Když toto pravidlo označí kód, doporučuje explicitně přidat mezilehlé přetypování ve zdrojovém kódu, aby byl jeho záměr jasný.

Pokud například napíšete (Derived)x , kde x je typ, který vyžaduje dva explicitní převody – nejprve na základní typ a potom na odvozený typ – ve zdroji je viditelné pouze jedno přetypování. Kompilátor vloží přechodné přetypování bez jakéhokoli naznačení ve zdrojovém kódu. Toto pravidlo navrhuje explicitně psát oba přetypování: (Derived)(Base)x.

Možnosti

Možnosti určují chování, které má pravidlo vynutit. Informace o konfiguraci možností naleznete v tématu Formát možnosti.

dotnet_style_prefer_non_hidden_explicit_cast_in_source

Vlastnictví Hodnota Description
Název možnosti dotnet_style_prefer_non_hidden_explicit_cast_in_source
Hodnoty možností true Raději zviditelněte všechna explicitní přetypování zprostředkujícího formátu ve zdrojovém kódu.
false Nedoporučuje se, aby všechna mezilehlá explicitní přetypování byla viditelná ve zdrojovém kódu.
Výchozí hodnota možnosti true

Příklad

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();
    }
}

Potlačte upozornění

Pokud chcete potlačit pouze jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

#pragma warning disable IDE0221
// The code that's violating the rule is on this line.
#pragma warning restore IDE0221

Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .

[*.cs]
dotnet_diagnostic.IDE0221.severity = none

Pokud chcete zakázat všechna pravidla stylu kódu, nastavte závažnost pro kategorii Style na none v konfiguračním souboru.

[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také