Comparteix a través de


CA2248: Proporcione el argumento enum correcto para Enum.HasFlag

Propiedad Valor
Identificador de la regla CA2248
Título Proporcionar el argumento enum correcto para Enum.HasFlag
Categoría Uso
La corrección interrumpe o no interrumpe Sin interrupción
Habilitado de forma predeterminada en .NET 10 Como sugerencia
Idiomas aplicables C# y Visual Basic

Causa

El tipo de enumeración que se pasa como argumento a la llamada del método HasFlag es diferente del tipo de enumeración esperado.

Descripción de la regla

El método Enum.HasFlag espera que el argumento enum sea del mismo tipo enum que la instancia en la que se invoca el método. Si son tipos diferentes enum , se producirá una excepción no controlada en tiempo de ejecución.

Cómo corregir infracciones

Para corregir los errores, use el mismo tipo de enumeración tanto en el argumento como en la función que llama.

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
    }
}

Cuándo suprimir las advertencias

No suprima las infracciones de esta regla.