Lire en anglais

Partager via


Enum.HasFlag(Enum) Méthode

Définition

Détermine si un ou plusieurs champs de bits sont définis dans l'instance actuelle.

C#
public bool HasFlag(Enum flag);

Paramètres

flag
Enum

Valeur d'énumération.

Retours

true si le ou les champs de bits définis dans flag sont également définis dans l’instance actuelle ; sinon, false.

Exceptions

flag est un type différent de l’instance actuelle.

Exemples

L’exemple suivant définit une DinnerItems énumération qui reflète les catégories d’articles qu’un client peut commander dans un restaurant. L’exemple teste si le client a commandé à la fois une entrée et une boisson.

C#
using System;

[Flags] public enum DinnerItems {
   None = 0,
   Entree = 1,
   Appetizer = 2,
   Side = 4,
   Dessert = 8,
   Beverage = 16,
   BarBeverage = 32
}

public class Example
{
   public static void Main()
   {
      DinnerItems myOrder = DinnerItems.Appetizer | DinnerItems.Entree |
                            DinnerItems.Beverage | DinnerItems.Dessert;
      DinnerItems flagValue = DinnerItems.Entree | DinnerItems.Beverage;
      Console.WriteLine("{0} includes {1}: {2}",
                        myOrder, flagValue, myOrder.HasFlag(flagValue));
   }
}
// The example displays the following output:
//    Entree, Appetizer, Dessert, Beverage includes Entree, Beverage: True

Remarques

La HasFlag méthode retourne le résultat de l’expression booléenne suivante.

C#
(thisInstance & flag) == flag

Si la valeur sous-jacente de flag est zéro, la méthode retourne true. Si ce comportement n’est pas souhaitable, vous pouvez utiliser la méthode pour tester l’égalité Equals avec zéro et appeler HasFlag uniquement si la valeur sous-jacente de est différente de flag zéro, comme l’illustre l’exemple suivant.

C#
using System;

[Flags] public enum Pets {
   None = 0,
   Dog = 1,
   Cat = 2,
   Bird = 4,
   Rabbit = 8,
   Other = 16
}

public class Example
{
   public static void Main()
   {
      Pets[] petsInFamilies = { Pets.None, Pets.Dog | Pets.Cat, Pets.Dog };
      int familiesWithoutPets = 0;
      int familiesWithDog = 0;

      foreach (var petsInFamily in petsInFamilies)
      {
         // Count families that have no pets.
         if (petsInFamily.Equals(Pets.None))
            familiesWithoutPets++;
         // Of families with pets, count families that have a dog.
         else if (petsInFamily.HasFlag(Pets.Dog))
            familiesWithDog++;
      }
      Console.WriteLine("{0} of {1} families in the sample have no pets.",
                        familiesWithoutPets, petsInFamilies.Length);
      Console.WriteLine("{0} of {1} families in the sample have a dog.",
                        familiesWithDog, petsInFamilies.Length);
   }
}
// The example displays the following output:
//       1 of 3 families in the sample have no pets.
//       2 of 3 families in the sample have a dog.

La HasFlag méthode est conçue pour être utilisée avec des types d’énumération marqués avec l’attribut FlagsAttribute et peut être utilisée pour déterminer si plusieurs champs de bits sont définis. Pour les types d’énumération qui ne sont pas marqués avec l’attribut FlagsAttribute , appelez la Equals méthode ou la CompareTo méthode .

S’applique à

Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Voir aussi