C#点点滴滴—Enum

 枚举是在写程序的过程中经常会遇到的类型。对于Enum,.Net提供了很多使用的方法:

    1.Parse:将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 (MSDN)

     Parse方法是经常会用到的一个方法,它有两个重载形式:

     public static Object Parse( Type enumType, string value )

     public static Object Parse( Type enumType, string value, bool ignoreCase )

    

    2.GetNames和GetName

    ●GetNames:检索指定枚举中常数名称的数组。(MSDN)

       方法原型:public static string[] GetNames(Type enumType)

    ●GetName :在指定枚举中检索具有指定值的常数的名称。(MSDN)

       方法原型:public static string GetName(Type enumType, Object value)

 

    3.GetValues

     ●GetValues:检索指定枚举中常数值的数组。(MSDN)

      方法原型:public static Array GetValues( Type enumType )

      注 :不存在GetValue方法。

     4.IsDefined:返回指定枚举中是否存在具有指定值的常数的指示。(MSDN)

        方法原型:public static bool IsDefined( Type enumType, Object value )

        当在将一个值转化枚举的时候,如果遇到这个值并非枚举的一分子的时候,会怎么样呢?

testC# Code
class Program
   {
        enum Test
       {
            Value1 =0,
           Value2 =1
       }
 
        static void Main(string[] args)
       {
            object o =Enum.Parse(typeof (Test), "2");
 
           Test t = (Test) o;
 
           Console.WriteLine(t);
       }
    }

上面的代码会正常运行,并不会抛出任何异常,因此当我们把这样一个值转换成枚举的时候可能会面临很多潜在的问题。不过IsDefined可以为我们解决这个问题,在转换时先用这个方法判断一下将解除我们的安全隐患。既然Parse方法可以接受一个值也可以接受一个 常数名称作为参数,那为什么IsDefined只有值做参数的形式呢?答案是如果传递一个非法的常数名称程序会抛出异常,而不会像上面的例子一样正常运行。

(更多的介绍请参看MSDN)

posted @ 2010-09-17 09:39  唔愛吃蘋果  阅读(276)  评论(0编辑  收藏  举报