C#的枚举Enum注意的问题

 

  1. enum MyEnum  
  2. {  
  3.     A = 1,  
  4.     B = 1  
  5. }  

好奇之下写了代码进行验证:

  1.     enum MyEnum  
  2.     {  
  3.         A,  
  4.         B = 2,  
  5.         C,  
  6.         D = 2,  
  7.         E,  
  8.         F = 1,  
  9.         G  
  10.     }  

竟然发现:

第一点:

  1. int a = (int)MyEnum.A;                  // a = 0  
  2. int c = (int)MyEnum.C;                  // c = 3  
  3. int e = (int)MyEnum.E;                  // e = 3  
  4. int g = (int)MyEnum.G;                  // g = 2  

  (1)、如果第一项没指定值,默认为0。

  (2)、项的值在枚举中不一定唯一。

  (2)、如果没指定项的值,后面项的值“总是”(不因任何原因,如已经存在值)等于前面项的值加1。

  (3)、枚举的项不一定是从前到后按小到大排序的。
 

第二点:

  1. bool result1 = (MyEnum.C == MyEnum.E);  // true  
  2. bool result2 = (MyEnum.B == MyEnum.G);  // true  
  3. MyEnum myE = (MyEnum)2;                 // MyEnum.B  

  (1)、枚举是值类型,在运算时都是用“值”来做运算的。

  (2)、当值转换成枚举时,从前到后搜索

posted @ 2011-07-22 23:18  meifage2  阅读(201)  评论(0编辑  收藏  举报