Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Propriedade | Valor |
|---|---|
| ID da regra | IDE0221 |
| Título | Adicionar conversão explícita |
| Categoria | Estilo |
| Subcategoria | Regras de idioma (preferências no nível da expressão) |
| Idiomas aplicáveis | C# |
| Opções | dotnet_style_prefer_non_hidden_explicit_cast_in_source |
Visão geral
Essa regra sinaliza conversões explícitas no código-fonte em que o compilador insere uma conversão explícita oculta adicional. As conversões visíveis e ocultas podem falhar no runtime por motivos diferentes. Quando essa regra sinaliza esse código, ela recomenda adicionar a conversão intermediária explicitamente no código-fonte para esclarecer a intenção do código.
Por exemplo, se você 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 ficará visível no código-fonte. O compilador insere a conversão intermediária sem qualquer indicação na origem. Esta regra sugere gravar ambas as conversões 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 da opção | true |
Preferir tornar todas as conversões explícitas intermediárias visíveis no código-fonte. |
false |
Não preferir tornar todas as conversões explícitas intermediárias 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 seu arquivo de origem para desabilitar a regra e, em seguida, habilitá-la novamente.
#pragma warning disable IDE0221
// The code that's violating the rule is on this line.
#pragma warning restore IDE0221
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade 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.