首页 > 其他 > 详细

处理“位域”枚举类型变量的几个例子

时间:2014-02-11 15:08:14      阅读:407      评论:0      收藏:0      [点我收藏+]

所谓的位域就是说利用一个整形数字二进制下不同的标志位来使一个枚举变量可以记录多个信息。

例如现在有一个定义好的位域枚举:

bubuko.com,布布扣
[Flags]
public enum FlagEnum
{
    我是第一个=1,
    我是第二个=2,
    我是第三个=4
}
bubuko.com,布布扣

单个枚举的赋值和普通枚举是一样的,直接给就好了:

FlagEnum status = FlagEnum.我是第一个;

再向其中添加其它枚举,则使用按位或运算:

status |= FlagEnum.我是第二个 | FlagEnum.我是第三个;

去除某个枚举值可以使用-=运算:

status -= FlagEnum.我是第三个 | FlagEnum.我是第一个;

判断某个枚举是否在其中可以使用按位与运算:

bubuko.com,布布扣
if ((status & FlagEnum.我是第二个) == FlagEnum.我是第二个)
{
    Console.WriteLine("我是第二个");
}
else
{
    Console.WriteLine("没有第二个");
}
bubuko.com,布布扣

在去除枚举值之前保险起见,最好先判断下枚举变量中是否含有要减去的枚举值,万一没有就惨了。。。

bubuko.com,布布扣
FlagEnum remove = FlagEnum.我是第三个 | FlagEnum.我是第一个;
if ((status & remove) == remove)
    status -= remove;
bubuko.com,布布扣

That‘s all。。。

处理“位域”枚举类型变量的几个例子

原文:http://www.cnblogs.com/xwgli/p/3543860.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!