CA2248 : Fournir le bon argument enum à Enum.HasFlag

Propriété Valeur
Identificateur de la règle CA2248
Titre Fournir le bon argument enum à Enum.HasFlag
Catégorie Utilisation
Le correctif a un effet disruptif ou non disruptif Sans rupture
Activé par défaut dans .NET 10 À titre de suggestion
Langues applicables C# et Visual Basic

Cause

Le type d’énumération passé en tant qu’argument lors de l'appel de la méthode HasFlag est différent de celui utilisé par l’énumération appelante.

Description de la règle

La méthode Enum.HasFlag attend que l’argument enum soit du même type enum que l’instance sur laquelle la méthode est appelée. Si ces types sont différents enum , une exception non gérée est levée au moment de l’exécution.

Comment corriger les violations

Pour corriger les violations, utilisez le même type d’énumération sur l’argument et l’appelant :

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

Quand supprimer les avertissements

Ne supprimez pas les violations de cette règle.