System.Enum.IsDefined 方法

方法描述

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

语法定义(C# System.Enum.IsDefined 方法 的用法)

[ComVisibleAttribute(true)]
public static bool IsDefined(
	Type enumType,
	Object value
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
enumType System-Type 枚举类型。
value System-Object enumType 的常数的值或名称。
返回值 System.Boolean 如果 enumType 的某个常数具有等于 value 的值,则为 true;否则为 false。

提示和注释

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

enumType 类型的任何成员。

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

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

enumType 的基础类型的一个值。

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

System.Enum.IsDefined 方法例子

然后,它使用通过设置多个位字段而生成的可能基础枚举值、字符串名称和组合值来调用 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

异常

异常 异常描述
ArgumentNullException enumType 或 value 为 null。
ArgumentException
  • enumType 不是 Enum。
  • value 的类型是枚举,但不是 enumType 类型的枚举。
  • value 的类型不是 enumType 的基础类型。
InvalidOperationException value 不是 SByte、Int16、Int32、Int64、Byte、UInt16、UInt32、UInt64 或 String 类型。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。