.net 枚举(Enum)使用总结
2016-06-24 13:57
357 查看
在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,性别只有男跟女等等。如果把这些量说明为整型、字符型或其它类型显然是不妥当的。为此,C#提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。
1、定义枚举
定义枚举很简单,直接使用enum关键字声明即可,例如定义性别的枚举,性别只有男和女
代码
代码
代码
注意此处使用了 位算符& 方式来获取判断,关于位算符的使用在此就不讲了。组合运用大概就是这样。必须注意的地方就是枚举值的定义,我们可以看到Role枚举的定义值的规律,0到1,1到2,2到4,4到8,8到16......当前的值为上个值的2次方,为什么要这样定义呢?是因为任何的组合都可以在枚举范围中某几个值的总和,例如组合值为15,那15就等于枚举定义范围里的定义值为1、2、4、8相加,15=1+2+4+8。只有按规律定义值,就可以组合成任意数。
组合必须注意的几点:
1.枚举定义时,必须打上[Flags]标记,系统才会根据这个标记来决定这个枚举是否可组合使用
2.定义枚举的值必须按以上所说的规律定义,例如:0、1、2、4、8、16、32.......也可以使用3次方的方式,例如:0、3、6、12、24..........
6.使用优点总结
1.规则性:例如数据库某个字段的值只在1、2、3、4,例如状态,当我们在录入数据时,我们可以从枚举中取值,这样避免了这个字段出现其它值,同时也使代码更容易理解,因为在取值时,我们是拿枚举定义的名称,名称是我们自定义的易理解的中文或英文。
2.易解性:就是上述所说的,枚举名称是用中文和英文来定义,在使用时,则拿枚举的名称,这样一看代码就知道。而不会在代码中写1、2、3、4这样的数字,也许过段时间自己写的都忘了了1代表什么?2代表什么?了,更何况日后他人的维护呢。
转自:http://www.360doc.com/content/14/0516/16/10966281_378264063.shtml
1、定义枚举
定义枚举很简单,直接使用enum关键字声明即可,例如定义性别的枚举,性别只有男和女
代码
1 <asp:TemplateField HeaderText="性别"> 2 <ItemTemplate> 3 <%#(枚举所在命名空间.Sex)Convert.ToInt32(Eval("Sex"))%> 4 </ItemTemplate> 5</asp:TemplateField>
代码
1 <asp:TemplateField HeaderText="性别"> 2 <ItemTemplate> 3 <%#Enum.GetName(typeof(枚举所在命名空间.Sex), Convert.ToInt32(Eval("Sex")))%> 4 </ItemTemplate> 5 </asp:TemplateField>
代码
Role myAllRole = (Role)allRole;//将int值强制转换为枚举 //此时,myAllRole的名称为 ‘ 删除数据, 修改数据 ’ ,值为3 //判断是否有删除权限 if ((myAllRole & Role.删除数据) == Role.删除数据) { //有 }
注意此处使用了 位算符& 方式来获取判断,关于位算符的使用在此就不讲了。组合运用大概就是这样。必须注意的地方就是枚举值的定义,我们可以看到Role枚举的定义值的规律,0到1,1到2,2到4,4到8,8到16......当前的值为上个值的2次方,为什么要这样定义呢?是因为任何的组合都可以在枚举范围中某几个值的总和,例如组合值为15,那15就等于枚举定义范围里的定义值为1、2、4、8相加,15=1+2+4+8。只有按规律定义值,就可以组合成任意数。
组合必须注意的几点:
1.枚举定义时,必须打上[Flags]标记,系统才会根据这个标记来决定这个枚举是否可组合使用
2.定义枚举的值必须按以上所说的规律定义,例如:0、1、2、4、8、16、32.......也可以使用3次方的方式,例如:0、3、6、12、24..........
6.使用优点总结
1.规则性:例如数据库某个字段的值只在1、2、3、4,例如状态,当我们在录入数据时,我们可以从枚举中取值,这样避免了这个字段出现其它值,同时也使代码更容易理解,因为在取值时,我们是拿枚举定义的名称,名称是我们自定义的易理解的中文或英文。
2.易解性:就是上述所说的,枚举名称是用中文和英文来定义,在使用时,则拿枚举的名称,这样一看代码就知道。而不会在代码中写1、2、3、4这样的数字,也许过段时间自己写的都忘了了1代表什么?2代表什么?了,更何况日后他人的维护呢。
转自:http://www.360doc.com/content/14/0516/16/10966281_378264063.shtml
相关文章推荐
- iOS ZipArchive
- Centos6.7安装oracle11gR2及配置开机启动、新建表空间和用户、导入数据
- exit(-1)
- python~实现tab补全
- 屏幕截图
- warning: Automatic Preferred Max Layout Width before iOS 8.0
- Java任务调度框架Quartz教程实例
- Struts2学习(四)—表单处理
- sort
- 云端观察:传统教育如何应对三大挑战?
- 心得与体会
- 第七次作业——学末总结
- 安卓中sharepreference总结
- 零基础到架构师 不花钱学JavaEE(基础篇)- 概述
- 零基础到架构师 不花钱学JavaEE(基础篇)- 概述
- 【Java基础】类和接口
- iOS XCode7制作.Framework动态库和.a静态库的总结
- 第七次作业——学末总结
- 基于radius的Mysql计费系统数据迁移
- sysfs API总结