Partage via


CA2248 : Fournir le bon argument enum à Enum.HasFlag

Propriété Value
Identificateur de la règle CA2248
Titre Fournir le bon argument enum à Enum.HasFlag
Catégorie Utilisation
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Comme suggestion

Cause

Le type d’énumération passé en tant qu’argument à l’appel de méthode HasFlag est différent du type d’énumération appelant.

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. S’il s’agit de types enum différents, une exception non prise en charge 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 run time

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

Quand supprimer les avertissements

Ne supprimez pas les violations de cette règle.