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

 

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

原文:http://blog.csdn.net/lyb018/article/details/6624887

转载于:https://www.cnblogs.com/018/archive/2011/07/22/2113601.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值