Enum.IsDefined(Type, Object) Enum.IsDefined(Type, Object) Enum.IsDefined(Type, Object) Enum.IsDefined(Type, Object) Method

定義

指定された整数値、またはその名前が文字列として指定した列挙型に存在するかどうかを示すブール値を返します。Returns a Boolean telling whether a given integral value, or its name as a string, exists in a specified enumeration.

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

パラメーター

enumType
Type Type Type Type

列挙型。An enumeration type.

value
Object Object Object Object

enumType 内の定数の値または名前。The value or name of a constant in enumType.

戻り値

enumType 内の定数の値が value と等しい場合は true。それ以外の場合は falsetrue if a constant in enumType has a value equal to value; otherwise, false.

例外

enumType または valuenull です。enumType or value is null.

enumTypeEnum ではありません。enumType is not an Enum.

または-or- value の型は列挙体ですが、型 enumType の列挙体ではありません。The type of value is an enumeration, but it is not an enumeration of type enumType.

- または --or- value の型は、enumType の基となる型ではありません。The type of value is not an underlying type of enumType.

次の例では、個々のビットフィールドで構成されるPetTypeという名前の列挙を定義します。The following example defines an enumeration named PetType that consists of individual bit fields. 次に、基になる列挙値、文字列名、および複数のビットフィールドを設定した結果として得られる複合値を使用してIsDefinedメソッドを呼び出します。It then calls the IsDefined method with possible underlying enumeration values, string names, and composite values that result from setting multiple bit fields.

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パラメーターには、次のいずれかを指定できます。The value parameter can be any of the following:

  • enumType型の任意のメンバー。Any member of type enumType.

  • 値がenumType型の列挙体メンバーである変数。A variable whose value is an enumeration member of type enumType.

  • 列挙メンバーの名前の文字列形式。The string representation of the name of an enumeration member. 文字列内の文字の大文字と小文字の区別は、列挙体のメンバー名と同じである必要があります。The characters in the string must have the same case as the enumeration member name.

  • enumTypeの基になる型の値。A value of the underlying type of enumType.

enumTypeの定数がビットフィールドのセットを定義し、valueが複数のビットフィールドの値、名前、または基になる値を含んでいる場合、IsDefinedメソッドはfalseます。If the constants in enumType define a set of bit fields and value contains the values, names, or underlying values of multiple bit fields, the IsDefined method returns false. つまり、ビットフィールドのセットを定義する列挙型では、1つのビットフィールドが列挙体に属しているかどうかのみが決定されます。In other words, for enumerations that define a set of bit fields, the method determines only whether a single bit field belongs to the enumeration. FlagsAttribute属性でタグ付けされた列挙型に複数のビットフィールドが設定されているかどうかHasFlagを確認するには、メソッドを呼び出します。To determine whether multiple bit fields are set in an enumeration type that is tagged with the FlagsAttribute attribute, you can call the HasFlag method.

注意 (呼び出し元)

enumType false value value属性を使用して定義された列挙である場合、の複数のビットフィールドが設定されていても、複合列挙値に対応していない場合、またはの場合、メソッドはを返します。 FlagsAttribute value複数のビットフラグの名前を連結した文字列です。If enumType is an enumeration that is defined by using the FlagsAttribute attribute, the method returns false if multiple bit fields in value are set but value does not correspond to a composite enumeration value, or if value is a string concatenation of the names of multiple bit flags. 次の例では、 FlagsAttribute属性を使用してペット列挙が定義されています。In the following example, a Pets enumeration is defined with the FlagsAttribute attribute. このIsDefined(Type, Object)メソッドはfalse 、2つのビットフィールド (ペットPets.Cat) が設定された列挙値を渡した場合、およびその列挙値の文字列形式 ("Dog, Cat") を渡した場合にを返します。The IsDefined(Type, Object) method returns false when you pass it an enumeration value that has two bit fields (Pets.Dog and Pets.Cat) set, and when you pass it the string representation of that enumeration value ("Dog, Cat").

[!code-csharpSystem.Enum.IsDefined#2] [!code-vbSystem.Enum.IsDefined#2][!code-csharpSystem.Enum.IsDefined#2] [!code-vbSystem.Enum.IsDefined#2] メソッドを呼び出すことによって、 HasFlag(Enum)複数のビットフィールドが設定されているかどうかを確認できます。You can determine whether multiple bit fields are set by calling the HasFlag(Enum) method.

適用対象

こちらもご覧ください