Compartilhar via


CA2248: Fornecer o argumento de enumeração correto para Enum.HasFlag

Property Valor
ID da regra CA2248
Título Fornecer o argumento de enumeração correto para Enum.HasFlag
Categoria Usage
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 Como sugestão

Causa

O tipo de enumeração transmitido como um argumento para a chamada de método HasFlag é diferente do tipo de enumeração de chamada.

Descrição da regra

O método Enum.HasFlag espera que o argumento enum seja do mesmo tipo enum que a instância na qual o método é invocado. Se forem tipos enum diferentes, uma exceção sem tratamento será gerada no runtime.

Como corrigir violações

Para corrigir violações, use o mesmo tipo de enumeração 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 run time

        m.HasFlag(MyEnum.A); // Valid call
    }
}

Quando suprimir avisos

Não suprima as violações dessa regra.