Enum.IsDefined Metoda

Definicja

Przeciążenia

IsDefined(Type, Object)

Zwraca wartość logiczną informującą, czy dana wartość całkowita, czy jej nazwa jako ciąg, istnieje w określonym wyliczeniu.

IsDefined<TEnum>(TEnum)

Zwraca wartość logiczną informującą, czy dana wartość całkowita, czy jej nazwa jako ciąg, istnieje w określonym wyliczeniu.

IsDefined(Type, Object)

Zwraca wartość logiczną informującą, czy dana wartość całkowita, czy jej nazwa jako ciąg, istnieje w określonym wyliczeniu.

public:
 static bool IsDefined(Type ^ enumType, System::Object ^ value);
public static bool IsDefined (Type enumType, object value);
[System.Runtime.InteropServices.ComVisible(true)]
public static bool IsDefined (Type enumType, object value);
static member IsDefined : Type * obj -> bool
[<System.Runtime.InteropServices.ComVisible(true)>]
static member IsDefined : Type * obj -> bool
Public Shared Function IsDefined (enumType As Type, value As Object) As Boolean

Parametry

enumType
Type

Typ wyliczenia.

value
Object

Wartość lub nazwa stałej w elemecie enumType.

Zwraca

Boolean

true jeśli stała w obiekcie enumType ma wartość równą value; w przeciwnym razie false.

Atrybuty

Wyjątki

enumType lub value to null.

enumType nie jest elementem Enum.

-lub-

Typ value to wyliczenie, ale nie jest to wyliczenie typu enumType.

-lub-

Typ elementu value nie jest bazowym typem enumType.

Przykłady

W poniższym przykładzie zdefiniowano wyliczenie o nazwie PetType składającej się z poszczególnych pól bitowych. Następnie wywołuje metodę IsDefined z możliwymi wartościami wyliczenia bazowego, nazwami ciągów i wartościami złożonymi, które wynikają z ustawiania wielu pól bitowych.

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
open System

[<Flags>]
type PetType =
    | None = 0
    | Dog = 1
    | Cat = 2
    | Rodent = 4
    | Bird = 8
    | Reptile = 16
    | Other = 32

[<EntryPoint>]
let main _ =
    // Call IsDefined with underlying integral value of member.
    let value = 1
    printfn $"{value}: {Enum.IsDefined(typeof<PetType>, value)}"
    // Call IsDefined with invalid underlying integral value.
    let value = 64
    printfn $"{value}: {Enum.IsDefined(typeof<PetType>, value)}"
    // Call IsDefined with string containing member name.
    let value = "Rodent"
    printfn $"{value}: {Enum.IsDefined(typeof<PetType>, value)}"
    // Call IsDefined with a variable of type PetType.
    let value = PetType.Dog
    printfn $"{value}: {Enum.IsDefined(typeof<PetType>, value)}"
    let value = PetType.Dog ||| PetType.Cat
    printfn $"{value}: {Enum.IsDefined(typeof<PetType>, value)}"
    // Call IsDefined with uppercase member name.
    let value = "None"
    printfn $"{value}: {Enum.IsDefined(typeof<PetType>, value)}"
    let value = "NONE"
    printfn $"{value}: {Enum.IsDefined(typeof<PetType>, value)}"
    // Call IsDefined with combined value
    let value = PetType.Dog ||| PetType.Bird
    printfn $"{value:D}: {Enum.IsDefined(typeof<PetType>, value)}"
    let value = value.ToString()
    printfn $"{value:D}: {Enum.IsDefined(typeof<PetType>, value)}"
    0
// 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
<Flags> Public Enum PetType As Integer
   None = 0
   Dog = 1
   Cat = 2
   Rodent = 4
   Bird = 8
   Reptile = 16
   Other = 32
End Enum

Module Example
   Public Sub Main()
      Dim value As Object
      
      ' Call IsDefined with underlying integral value of member.
      value = 1
      Console.WriteLine("{0}: {1}", value, [Enum].IsDefined(GetType(PetType), value))
      ' Call IsDefined with invalid underlying integral value.
      value = 64
      Console.WriteLine("{0}: {1}", value, [Enum].IsDefined(GetType(PetType), value))
      ' Call IsDefined with string containing member name.
      value = "Rodent"
      Console.WriteLine("{0}: {1}", value, [Enum].IsDefined(GetType(PetType), value))
      ' Call IsDefined with a variable of type PetType.
      value = PetType.Dog
      Console.WriteLine("{0}: {1}", value, [Enum].IsDefined(GetType(PetType), value))
      value = PetType.Dog Or PetType.Cat
      Console.WriteLine("{0}: {1}", value, [Enum].IsDefined(GetType(PetType), value))
      ' Call IsDefined with uppercase member name.      
      value = "None"
      Console.WriteLine("{0}: {1}", value, [Enum].IsDefined(GetType(PetType), value))
      value = "NONE"
      Console.WriteLine("{0}: {1}", value, [Enum].IsDefined(GetType(PetType), value))
      ' Call IsDefined with combined value
      value = PetType.Dog Or PetType.Bird
      Console.WriteLine("{0:D}: {1}", value, [Enum].IsDefined(GetType(PetType), value))
      value = value.ToString()
      Console.WriteLine("{0:D}: {1}", value, [Enum].IsDefined(GetType(PetType), value))
   End Sub
End Module
' 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

Uwagi

Parametr value może być dowolny z następujących:

  • Dowolny element członkowski typu enumType.

  • Zmienna, której wartość jest elementem członkowskim wyliczenia typu enumType.

  • Reprezentacja ciągu nazwy elementu członkowskiego wyliczenia. Znaki w ciągu muszą mieć taki sam przypadek jak nazwa elementu członkowskiego wyliczenia.

  • Wartość bazowego enumTypetypu .

Jeśli stałe w enumType programie definiują zestaw pól bitowych i value zawierają wartości, nazwy lub bazowe wartości wielu pól bitowych, IsDefined metoda zwraca wartość false. Innymi słowy, w przypadku wyliczeń, które definiują zestaw pól bitowych, metoda określa tylko, czy jedno bitowe pole należy do wyliczenia. Aby określić, czy wiele pól bitowych jest ustawionych w typie wyliczenia oznaczonym atrybutem FlagsAttribute , możesz wywołać metodę HasFlag .

Uwagi dotyczące wywoływania

Jeśli enumType jest wyliczaniem zdefiniowanym przy użyciu atrybutu FlagsAttribute , metoda zwraca false , jeśli ustawiono wiele pól value bitowych, ale value nie odpowiada złożonej wartości wyliczania lub jeśli value jest łączeniem ciągów nazw wielu flag bitowych. W poniższym przykładzie wyliczenie zwierząt domowych jest definiowane za pomocą atrybutu FlagsAttribute . Metoda IsDefined(Type, Object) zwraca wartość false wyliczenia zawierającą dwa pola bitowe (Pets.Dog i Pets.Cat) i po przekazaniu jej reprezentacji ciągu tej wartości wyliczenia ("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

Możesz określić, czy ustawiono wiele pól bitowych, wywołując metodę HasFlag(Enum) .

Zobacz też

Dotyczy

IsDefined<TEnum>(TEnum)

Zwraca wartość logiczną informującą, czy dana wartość całkowita, czy jej nazwa jako ciąg, istnieje w określonym wyliczeniu.

public:
generic <typename TEnum>
 where TEnum : value class static bool IsDefined(TEnum value);
public static bool IsDefined<TEnum> (TEnum value) where TEnum : struct;
static member IsDefined : 'Enum -> bool (requires 'Enum : struct)
Public Shared Function IsDefined(Of TEnum As Structure) (value As TEnum) As Boolean

Parametry typu

TEnum

Typ wyliczenia.

Parametry

value
TEnum

Wartość lub nazwa stałej w elemecie TEnum.

Zwraca

Boolean

true jeśli dana wartość całkowita lub jego nazwa jako ciąg, istnieje w określonym wyliczeniu; false Inaczej.

Dotyczy