Číst v angličtině

Sdílet prostřednictvím


Enum.HasFlag(Enum) Metoda

Definice

Určuje, zda je v aktuální instanci nastaveno jedno nebo více bitových polí.

public bool HasFlag (Enum flag);

Parametry

flag
Enum

Hodnota výčtu.

Návraty

Boolean

true Pokud jsou bitová pole nebo bitová pole, která jsou nastavena v , nastavena také v flag aktuální instanci, jinak false hodnota .

Výjimky

flag je jiný typ než aktuální instance.

Příklady

Následující příklad definuje výčet, který odráží kategorie položek, které si zákazník může objednat DinnerItems v restauraci. Příklad testuje, jestli si zákazník objednal jídlo i jídlo.

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

Poznámky

Metoda HasFlag vrátí výsledek následujícího logického výrazu.

thisInstance And flag = flag

Pokud je podkladová hodnota flag hodnoty nula, vrátí metoda true hodnotu . Pokud toto chování není žádoucí, můžete použít metodu k otestování rovnosti s nulou a volat pouze v případě, že základní hodnota je nenulová, jak ukazuje Equals HasFlag následující flag příklad.

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.

Metoda je navržena pro použití s typy výčtu, které jsou označeny atributem a lze je použít k určení, zda HasFlag FlagsAttribute je nastaveno více bitových polí. Pro výčtové typy, které nejsou označeny FlagsAttribute atributem , volejte buď Equals metodu , nebo CompareTo metodu .

Platí pro

Viz také