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.IsDefined-Methode: (Type, Object)

 

Veröffentlicht: Oktober 2016

Gibt eine Angabe darüber zurück, ob eine angegebene Enumeration eine Konstante mit einem angegebenen Wert enthält.

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

[ComVisibleAttribute(true)]
public static bool IsDefined(
	Type enumType,
	object value
)

Parameter

enumType
Type: System.Type

Ein Enumerationstyp.

value
Type: System.Object

Der Wert oder Name einer Konstanten in enumType.

Rückgabewert

Type: System.Boolean

true, wenn eine Konstante in enumType den Wert value hat, andernfalls false.

Exception Condition
ArgumentNullException

enumType oder value ist null.

ArgumentException

enumType ist keine Enum.

- oder -

Der Typ von value ist eine Enumeration, dabei handelt es sich jedoch nicht um eine Enumeration vom Typ enumType.

- oder -

Der Typ von value ist kein zugrunde liegender Typ von enumType.

InvalidOperationException

value hat nicht den Typ SByte, Int16, Int32, Int64, Byte, UInt16, UInt32, UInt64 oder String.

Die value Parameter kann eine der folgenden sein:

  • Alle Member des Typs enumType.

  • Eine Variable, deren Wert ein Enumerationsmember vom Typ enumType.

  • Die Zeichenfolgendarstellung des Namens des einen Enumerationsmember. Die Zeichen in der Zeichenfolge müssen die gleiche Groß-/Kleinschreibung als Enumeration Elementnamen ein.

  • Ein Wert des zugrunde liegenden Typs von enumType.

Wenn die Konstanten in enumType definieren einen Satz von Bitfeldern und value enthält die Werte, die Namen oder die zugrunde liegenden mehrere Bitfelder, die IsDefined -Methode zurückkehrt false. Das heißt, ermittelt für Enumerationen, die einen Satz von Bitfeldern definieren, die Methode nur, ob ein einzelnes Bit-Feld der Enumeration gehört. Um festzustellen, ob mehrere Bitfelder in einem Enumerationstyp festgelegt werden, das mit gekennzeichnet ist die FlagsAttribute -Attribut, rufen Sie die HasFlag Methode.

Hinweise für Aufrufer:

Wenn enumType ist eine Enumeration, die mit definiert ist die FlagsAttribute -Attribut gibt die Methode zurück false Wenn Felder mehrere Bit in value festgelegt sind, aber value entspricht einer zusammengesetzten Enumerationswert oder, wenn value besteht aus einer zeichenfolgenverkettung der Namen von mehreren Bitflags. Im folgenden Beispiel ein Pets Enumeration definiert ist, mit der FlagsAttribute Attribut. Die IsDefined -Methode zurückkehrt false , wenn Sie übergeben sie einen Enumerationswert, der zwei Bitfelder (Pets.Dog und Pets.Cat) festgelegt, und wenn Sie übergeben eine Zeichenfolgendarstellung des entsprechenden Wertes Enumeration ("Dog, Cat").

using System;

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

public class Example
{
   public static void Main()
   {
      Pets value = Pets.Dog | Pets.Cat;
      Console.WriteLine("{0:D} Exists: {1}", 
                        value, Pets.IsDefined(typeof(Pets), value));
      string name = value.ToString();
      Console.WriteLine("{0} Exists: {1}", 
                        name, Pets.IsDefined(typeof(Pets), name));
   }
}
// The example displays the following output:
//       3 Exists: False
//       Dog, Cat Exists: False

Sie können bestimmen, ob mehrere Bitfelder, durch Aufrufen festgelegt werden der HasFlag Methode.

Das folgende Beispiel definiert eine Enumeration namens PetType , einzelne Bitfelder besteht. Er ruft dann die IsDefined Methode mit möglichen zugrunde liegenden Enumerationswerten, Zeichenfolgennamen und zusammengesetzten Werte, die aus mehreren Bitfelder festlegen.

using System;

[Flags] public enum PetType
{
   None = 0, Dog = 1, Cat = 2, Rodent = 4, Bird = 8, Reptile = 16, Other = 32
};

public class Example
{
   public static void Main()
   {
      object value; 

      // Call IsDefined with underlying integral value of member.
      value = 1;
      Console.WriteLine("{0}: {1}", value, Enum.IsDefined(typeof(PetType), value));
      // Call IsDefined with invalid underlying integral value.
      value = 64;
      Console.WriteLine("{0}: {1}", value, Enum.IsDefined(typeof(PetType), value));
      // Call IsDefined with string containing member name.
      value = "Rodent";
      Console.WriteLine("{0}: {1}", value, Enum.IsDefined(typeof(PetType), value));
      // Call IsDefined with a variable of type PetType.
      value = PetType.Dog;
      Console.WriteLine("{0}: {1}", value, Enum.IsDefined(typeof(PetType), value));
      value = PetType.Dog | PetType.Cat;
      Console.WriteLine("{0}: {1}", value, Enum.IsDefined(typeof(PetType), value));
      // Call IsDefined with uppercase member name.      
      value = "None";
      Console.WriteLine("{0}: {1}", value, Enum.IsDefined(typeof(PetType), value));
      value = "NONE";
      Console.WriteLine("{0}: {1}", value, Enum.IsDefined(typeof(PetType), value));
      // Call IsDefined with combined value
      value = PetType.Dog | PetType.Bird;
      Console.WriteLine("{0:D}: {1}", value, Enum.IsDefined(typeof(PetType), value));
      value = value.ToString();
      Console.WriteLine("{0:D}: {1}", value, Enum.IsDefined(typeof(PetType), value));
   }
}
// The example displays the following output:
//       1: True
//       64: False
//       Rodent: True
//       Dog: True
//       Dog, Cat: False
//       None: True
//       NONE: False
//       9: False
//       Dog, Bird: False

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