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)、当值转换成枚举时,从前到后搜索