Adicionar elenco explícito (IDE0221)

Propriedade Valor
ID da regra IDE0221
Título Adicionar transmissão explícita
Categoria Estilo
Subcategoria Regras de idioma (preferências no nível da expressão)
Línguas aplicáveis C#
Opções dotnet_style_prefer_non_hidden_explicit_cast_in_source

Descrição geral

Esta regra sinaliza conversões explícitas no código-fonte em que o compilador insere uma conversão adicional que está oculta. Tanto a conversão visível como a oculta podem falhar em tempo de execução por diferentes razões. Quando esta regra sinaliza tal código, recomenda adicionar explicitamente o cast intermédio no código-fonte para deixar clara a intenção do código.

Por exemplo, se escrever (Derived)x onde x é de um tipo que requer duas conversões explícitas—primeiro para um tipo base e depois para o tipo derivado—apenas uma conversão é visível no código fonte. O compilador insere o cast intermédio sem qualquer indicação no código fonte. Esta regra sugere escrever ambos os elencos explicitamente: (Derived)(Base)x.

Opções

As opções especificam o comportamento que você deseja que a regra imponha . Para obter informações sobre como configurar opções, consulte Formato de opção.

dotnet_style_prefer_non_hidden_explicit_cast_in_source

Propriedade Valor Descrição
Nome da opção dotnet_style_prefer_non_hidden_explicit_cast_in_source
Valores de opção true Prefiro tornar todos os casts explícitos intermédios visíveis no código-fonte.
false Não optes por tornar todos os casts intermédios explícitos visíveis no código-fonte.
Valor da opção padrão true

Exemplo

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

Suprimir um aviso

Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desativar e, em seguida, reativar a regra.

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

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

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

Para desabilitar todas as regras de estilo de código, defina a severidade da categoria Style como none no arquivo de configuração.

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

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também