Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
| Property | valor |
|---|---|
| ID da regra | CA2248 |
| Título | Forneça o argumento enum correto para Enum.HasFlag |
| Categoria | Utilização |
| A correção está quebrando ou não quebrando | Sem quebra |
| Habilitado por padrão no .NET 10 | Como sugestão |
Motivo
O tipo enum passado como um argumento para a chamada de HasFlag método é diferente do tipo enum chamador.
Descrição da regra
O Enum.HasFlag método espera que o enum argumento seja do mesmo enum tipo que a instância na qual o método é invocado. Se forem de tipos diferentes enum , uma exceção não tratada será lançada em tempo de execução.
Como corrigir violações
Para corrigir violações, use o mesmo tipo de enum no argumento e no chamador:
public class C
{
[Flags]
public enum MyEnum { A, B, }
[Flags]
public enum OtherEnum { A, }
public void Method(MyEnum m)
{
m.HasFlag(OtherEnum.A); // Enum types are different, this call will cause an `ArgumentException` to be thrown at runtime
m.HasFlag(MyEnum.A); // Valid call
}
}
Quando suprimir avisos
Não reprima violações desta regra.