Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| 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.