Enum.IsDefined 方法

定義

多載

IsDefined(Type, Object)

傳回布林值,告知指定整數值或其作為字串的名稱,是否存在於指定的列舉中。

IsDefined<TEnum>(TEnum)

傳回布林值,告知指定整數值或其作為字串的名稱,是否存在於指定的列舉中。

IsDefined(Type, Object)

傳回布林值,告知指定整數值或其作為字串的名稱,是否存在於指定的列舉中。

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

參數

enumType
Type

列舉類型。

value
Object

enumType 中常數的數值或名稱。

傳回

Boolean

如果在 enumType 中的常數有等於 value 的數值,則為 true,否則為 false

屬性

例外狀況

enumTypevaluenull

enumType 不是 Enum

-或-

類型 value 是列舉,但不是 enumType 列舉類型。

-或-

類型 value 不是 enumType 的基礎類型。

value 不是類型 SByteInt16Int32Int64ByteUInt16UInt32UInt64String

範例

下列範例會定義名為 PetType 的列舉,其中包含個別的位欄位。 然後,它會 IsDefined 使用可能的基礎列舉值、字串名稱,以及因設定多個位欄位而產生的複合值來呼叫方法。

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

備註

value參數可以是下列任何一項:

  • 任何類型的成員 enumType

  • 變數,其值為類型的列舉成員 enumType

  • 列舉成員名稱的字串表示。 字串中的字元必須與列舉成員名稱具有相同的大小寫。

  • 基礎類型的值 enumType

如果中的常數 enumType 定義了一組位欄位,而且 value 包含多個位欄位的值、名稱或基礎值,則此 IsDefined 方法會傳回 false 。 換句話說,針對定義一組位欄位的列舉,此方法只會決定單一位欄位是否屬於列舉。 若要判斷是否在標記了屬性(attribute)的列舉型別中設定多個位欄位 FlagsAttribute ,您可以呼叫 HasFlag 方法。

給呼叫者的注意事項

如果 enumType 是使用屬性所定義的列舉 FlagsAttribute ,則方法會傳回是否 false 已設定中的多個位欄位, valuevalue 未對應至複合列舉值,或是否 value 為多個位旗標名稱的字串串連。 在下列範例中,會使用屬性定義 寵物 列舉 FlagsAttributeIsDefined(Type, Object) false 當您將具有兩個位欄位的列舉值( (寵物. 狗Pets.Cat) 組)傳遞給它時,方法就會傳回,而且當您將該列舉值的字串表示傳遞給它時 ( "Dog,Cat" ) 。

::: code language = "csharp" source = "~/samples/snippets/csharp/VS_Snippets_CLR_System/system。IsDefined/cs/isdefined2 .cs "interactive =" dotnet "id =" Snippet2 ":::::: code language =" vb "source =" ~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system。IsDefined/vb/isdefined2 .vb "id =" Snippet2 ":::

您可以藉由呼叫方法來判斷是否已設定多個位欄位 HasFlag(Enum)

另請參閱

適用於

IsDefined<TEnum>(TEnum)

傳回布林值,告知指定整數值或其作為字串的名稱,是否存在於指定的列舉中。

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

類型參數

TEnum

列舉的型別。

參數

value
TEnum

TEnum 中常數的數值或名稱。

傳回

Boolean

如果指定的列舉中存在指定整數值或其作為字串的名稱則為 true,否則為 false

適用於