Compartilhar via


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

Propriedade Valor
ID da regra CA2248
Título Forneça o argumento de enumeração correto para Enum.HasFlag
Categoria Usage
Correção interruptiva ou sem interrupção Inquebrável
Habilitado por padrão no .NET 10 Como sugestão
Idiomas aplicáveis C# e Visual Basic

Causa

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

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 diferentes enum , uma exceção sem tratamento será gerada em 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 runtime

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

Quando suprimir avisos

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