黑马程序员技术交流社区

标题: 枚举中的位标志是怎么回事? [打印本页]

作者: 师弟    时间: 2013-12-5 19:48
标题: 枚举中的位标志是怎么回事?
本帖最后由 师弟 于 2013-12-8 17:03 编辑

几个枚举值位与运算再赋给这个枚举的变量,然后这些个枚举值能全部保存。是什么原理?
枚举中Flags特性是什么?
作者: 土豆泥    时间: 2013-12-5 20:05
枚举就是定义了一系列“名/数值”对应关系,使用Enum创建.枚举前加上一个[Flags]属性,就可以变成位标志,以便方便地进行组合.位标志中每一个标志的值应该是2的n次方。枚举我们一般有两种用法,一是表示唯一的元素序列,例如一周里的各天;还有就是用来表示多种复合的状态。后者我们就要使用flags。原理是,每一个标志的值是2的n次方,用二进制表示就是,1:00000001, 2:00000010,4:00000100,如此这样。这样我们观察复合之后的结果内的1的位置和数量就知道是如何复合的,比如1或2的结果就是00000011.
作者: 红鹰(Jake)    时间: 2013-12-6 23:32
顶一下上楼
作者: V_John    时间: 2013-12-7 09:49
如果问题得到解决,请修改为已解决
作者: 红鹰(Jake)    时间: 2013-12-7 23:46
其实位标志就是一个位集合,其中有些位on,有些位off。枚举是一个数值,是位集合中若干值的累加。
在枚举上应用[Flags]属性,就可以用枚举来表示一组可以组合的位标志,一般要定义一个值为0的None符号。
eg:
public Enum Lianxi
{
wanShua=0x0002,
chiFan=0x0003,
kanShu=0x0004
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2