Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Enum.HasFlag-Methode: (Enum)

.NET Framework (current version)
 

Veröffentlicht: Oktober 2016

Bestimmt, ob ein oder mehrere Bitfelder in der aktuellen Instanz festgelegt werden.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public bool HasFlag(
	Enum flag
)

Parameter

flag
Type: System.Enum

Ein Enumerationswert.

Rückgabewert

Type: System.Boolean

true, wenn das in flag festgelegte Bitfeld bzw. die Bitfelder auch in der aktuellen Instanz festgelegt werden, andernfalls false.

Exception Condition
ArgumentException

flag weist einen anderen Typ als die aktuelle Instanz auf.

Die HasFlag -Methode gibt das Ergebnis des folgenden booleschen Ausdrucks zurück.

thisInstance And flag = flag 

Wenn die zugrunde liegenden Wert des flag gleich NULL ist, gibt die Methode true. Wenn dieses Verhalten nicht erwünscht ist, können Sie die Equals Methode auf Gleichheit mit 0 (null) und rufen HasFlag nur, wenn den zugrunde liegenden Wert flag ist ungleich NULL ist, wie im folgenden Beispiel veranschaulicht.

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.

Die HasFlag -Methode entwickelt, um mit Enumerationstypen verwendet werden, die mit der FlagsAttribute -Attribut und kann verwendet werden, um zu bestimmen, ob mehrere Bitfelder festgelegt werden. Für Enumerationstypen, die nicht mit markiert sind die FlagsAttribute Attribut, rufen Sie entweder die Equals -Methode oder die CompareTo Methode.

Das folgende Beispiel definiert eine ItemsOrdered -Enumeration, die Kategorien der Elemente entspricht, die ein Kunde in einem Restaurant bestellen kann. Im Beispiel wird getestet, ob der Kunde sowohl ein Hauptgericht als auch ein Getränk bestellt hat.

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

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 4.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 4.0
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: