Partilhar via


CA2248: Forneça o argumento enum correto para Enum.HasFlag

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 8 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 argumento seja do mesmo enum tipo que a instância na qual o enum método é invocado. Se forem 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 run time

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

Quando suprimir avisos

Não reprima violações desta regra.