当前位置:编程学习 > C#/ASP.NET >>

C#的枚举Enum注意的问题

前段时间,由于在项目中不小心把同一个枚举中的两个不同项写成了同一个值,项目编译正常。如下:

    enum MyEnum
    {
        A = 1,
        B = 1
    }
好奇之下写了代码进行验证:

    enum MyEnum
    {
        A,
        B = 2,
        C,
        D = 2,
        E,
        F = 1,
        G
    }
竟然发现:

第一点:

            int a = (int)MyEnum.A;                  // a = 0
            int c = (int)MyEnum.C;                  // c = 3
            int e = (int)MyEnum.E;                  // e = 3
            int g = (int)MyEnum.G;                  // g = 2
  (1)、如果第一项没指定值,默认为0。

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

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

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

第二点:

            bool result1 = (MyEnum.C == MyEnum.E);  // true
            bool result2 = (MyEnum.B == MyEnum.G);  // true
            MyEnum myE = (MyEnum)2;                 // MyEnum.B
  (1)、枚举是值类型,在运算时都是用“值”来做运算的。

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

 

写得不好多见谅,欢迎指正及指教。

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,