Type.IsEnumDefined(Object)方法用于返回一个值,该值指示当前枚举类型中是否存在指定的值。
Syntax: public virtual bool IsEnumDefined (object value);
Here, it takes the value to be tested.
Return Value: This method returns true if the specified value is a member of the current enumeration type otherwise, false.
例外情况:
- ArgumentException :如果当前类型不是枚举。
- ArgumentNullException :如果该值为null。
- InvalidOperationException :如果该值的类型不能是枚举的基础类型。
下面的程序说明了Type.IsEnumDefined(Object)方法的用法:
范例1:
// C# program to demonstrate the
// Type.IsEnumDefined(Object) Method
using System;
using System.Globalization;
using System.Reflection;
class GFG {
// defining enum enu
public enum enu {A, B, C};
// Main Method
public static void Main()
{
// try-catch block for handling Exception
try {
// creating and initializing object Type
object value = enu.A;
// checking for the current enumeration type
// by using IsEnumDefined() Method
bool status = typeof(enu).IsEnumDefined(value);
// display the result
if (status)
Console.WriteLine("specified value is a member"+
" of the current enumeration type");
else
Console.WriteLine("specified value is not"+
" present in the current enumeration type");
}
// catch ArgumentNullException here
catch (ArgumentNullException e) {
Console.WriteLine("Object is null.");
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
// catch ArgumentNullException here
catch (InvalidOperationException e) {
Console.WriteLine("Object is null.");
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
// catch ArgumentException here
catch (ArgumentException e) {
Console.WriteLine("Object is null.");
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
}
}
输出:
specified value is a member of the current enumeration type
范例2:
// C# program to demonstrate the
// Type.IsEnumDefined(Object) Method
using System;
using System.Globalization;
using System.Reflection;
class GFG {
// defining enum enu
public enum enu {A, B, C};
// Main Method
public static void Main()
{
// try-catch block for handling Exception
try {
// creating and initializing object Type
object value = enu.B;
// checking for the current enumeration type
// by using IsEnumDefined() Method
bool status = typeof(int).IsEnumDefined(value);
// display the result
if (status)
Console.WriteLine("specified value is a member"+
" of the current enumeration type");
else
Console.WriteLine("specified value is not"+
" present in the current enumeration type");
}
// catch ArgumentNullException here
catch (ArgumentNullException e) {
Console.WriteLine("value is null.");
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
// catch ArgumentException here
catch (ArgumentException e) {
Console.WriteLine("The current type is not an enumeration.");
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
}
}
输出:
The current type is not an enumeration.
Exception Thrown: System.ArgumentException
范例3:
// C# program to demonstrate the
// Type.IsEnumDefined(Object) Method
using System;
using System.Globalization;
using System.Reflection;
class GFG {
// defining enum enu
public enum enu {A, B, C};
// Main Method
public static void Main()
{
// try-catch block for handling Exception
try {
// creating and initializing object Type
object value = null;
// checking for the current enumeration type
// by using IsEnumDefined() Method
bool status = typeof(enu).IsEnumDefined(value);
// display the result
if (status)
Console.WriteLine("specified value is a member"+
" of the current enumeration type");
else
Console.WriteLine("specified value is not"+
" present in the current enumeration type");
}
// catch ArgumentNullException here
catch (ArgumentNullException e) {
Console.WriteLine("value is null.");
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
// catch ArgumentException here
catch (ArgumentException e) {
Console.WriteLine("The current type is not an enumeration.");
Console.Write("Exception Thrown: ");
Console.Write("{0}", e.GetType(), e.Message);
}
}
}
输出:
value is null.
Exception Thrown: System.ArgumentNullException
参考:
- https://docs.microsoft.com/zh-cn/dotnet/api/system.type.isenumdefined?view=netframework-4.8