情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Enum.IsDefined メソッド

2013/12/12

指定した値を持つ定数が指定した列挙体に存在するかどうかを示す値を返します。

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public static bool IsDefined(
	Type enumType,
	Object value
)

パラメーター

enumType
型: System.Type
列挙型。
value
型: System.Object
enumType 内の定数の値または名前。

戻り値

型: System.Boolean
enumType 内の定数の値がvalue と等しい場合は true。それ以外の場合は false

例外条件
ArgumentNullException

enumType または valuenull です。

ArgumentException

enumTypeEnum ではありません。

または

value の型が enumType ではありません。

または

value の型が、enumType の基になる型ではありません。

InvalidOperationException

value が型 SByteInt16Int32Int64ByteUInt16UInt32UInt64 または String ではありません。

value パラメーターは、次のいずれかの値になります。

  • enumType 型の任意のメンバー。

  • 値が enumType 型の列挙体のメンバーである変数。

  • 列挙体のメンバーの名前を表す文字列。文字列内の文字の大文字/小文字の使い分けは、列挙体のメンバーの名前と同じである必要があります。

  • enumType の基になる型の値。

enumType の定数にビット フィールドのセットが定義され、value に複数のビット フィールドの値、名前、または基になる値が含まれている場合、IsDefined メソッドは false を返します。つまり、このメソッドは、ビット フィールドのセットが定義されている列挙体に対して、この列挙体に単独のビット フィールドが属しているかどうかだけを調べるように設計されています。

呼び出し時の注意

enumTypeFlagsAttribute 属性を使用して定義される列挙体の場合で、value の複数のビット フィールドが設定されていても、value が複合列挙値に対応していない場合、または value が複数のビット フラグの名前の連結文字列である場合、メソッドは false を返します。

次の例は、個別のフィールドから構成される 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 Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      object value; 

      // Call IsDefined with underlying integral value of member.
      value = 1;
      outputBlock.Text += String.Format("{0}: {1}\n", 
                          value, Enum.IsDefined(typeof(PetType), value));
      // Call IsDefined with invalid underlying integral value.
      value = 64;
      outputBlock.Text += String.Format("{0}: {1}\n", 
                          value, Enum.IsDefined(typeof(PetType), value));
      // Call IsDefined with string containing member name.
      value = "Rodent";
      outputBlock.Text += String.Format("{0}: {1}\n", 
                          value, Enum.IsDefined(typeof(PetType), value));
      // Call IsDefined with a variable of type PetType.
      value = PetType.Dog;
      outputBlock.Text += String.Format("{0}: {1}\n", 
                          value, Enum.IsDefined(typeof(PetType), value));
      value = PetType.Dog | PetType.Cat;
      outputBlock.Text += String.Format("{0}: {1}\n", 
                          value, Enum.IsDefined(typeof(PetType), value));
      // Call IsDefined with uppercase member name.      
      value = "None";
      outputBlock.Text += String.Format("{0}: {1}\n", 
                          value, Enum.IsDefined(typeof(PetType), value));
      value = "NONE";
      outputBlock.Text += String.Format("{0}: {1}\n", 
                          value, Enum.IsDefined(typeof(PetType), value));
      // Call IsDefined with combined value
      value = PetType.Dog | PetType.Bird;
      outputBlock.Text += String.Format("{0:D}: {1}\n", 
                          value, Enum.IsDefined(typeof(PetType), value));
      value = value.ToString();
      outputBlock.Text += String.Format("{0:D}: {1}\n", 
                          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


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: