信息
您所需的主题如下所示。但此主题未包含在此库中。

Enum.IsDefined 方法

2013/12/13

返回指定枚举中是否存在具有指定值的常数的指示。

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

enumTypevaluenull

ArgumentException

enumType 不是 Enum

- 或 -

value 的类型不是 enumType

- 或 -

value 的类型不是 enumType 的基础类型。

InvalidOperationException

value 不是 SByteInt16Int32Int64ByteUInt16UInt32UInt64String 类型。

value 参数可以是以下任意一项:

  • enumType 类型的任何成员。

  • 一个变量,其值是 enumType 类型的一个枚举成员。

  • 表示枚举成员名称的字符串。该字符串中字符的大小写必须与枚举成员名称的大小写相同。

  • enumType 的基础类型的一个值。

如果 enumType 中的常量定义一组位字段,且 value 包含多个位字段的值、名称或基础值,则 IsDefined 方法返回 false。也就是说,对于定义一组位字段的枚举,该方法仅用于确定单个位字段是否属于该枚举。

对调用者的说明

如果 enumType 是使用 FlagsAttribute 特性定义的枚举,当 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

Windows Phone

显示: