📜  C#| Type.IsEnumDefined()方法

📅  最后修改于: 2021-05-29 15:50:16             🧑  作者: Mango

Type.IsEnumDefined(Object)方法用于返回一个值,该值指示当前枚举类型中是否存在指定的值。

例外情况

  • 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