C#的Enum中Flags的用法

介绍

Flags关键字允许我们在使用.net 枚举变量时,使用多个组合值

 

使用演示

 

 

复制代码
复制代码
 1     [Flags]
 2      enum WeekDays
 3     { 
 4          // 注意: 这里不要将Sunday设置为0x0,至于为什么留给大家思考
 5         Monday =  0x1,
 6         Tuesday =  0x2,
 7         Wednesday =  0x4,
 8         Thursday =  0x8,
 9         Friday =  0x10,
10         Saturday =  0x20,
11         Sunday =  0x40
12     }
复制代码
复制代码

      只需要在Enum上使用上[Flags]标签即可标记为可组合的枚举.下面是简单的用法:

 

 

复制代码
复制代码
 1          static  void TestEnumFlags()
 2         {
 3              /* ***********Kingmoon Lab 之 enum flags 语法******************** */
 4              /* 用'|'将各个枚举值分开即可 */
 5             WeekDays wds = WeekDays.Monday | WeekDays.Sunday | WeekDays.Tuesday;
 6             Console.WriteLine( " 我这3天要来大姨妈: "+wds);
 7              /*  我们来看看计算过程:
 8               * 或运算:
 9                   0000 0001 --星期一 0x1
10                或 0100 0000 --星期六 0x20
11                或 0000 0010 --星期二 0x2
12               =   0100 0011 = 67
13               *换句话说: 某个位是1就代表了这个位上的值在枚举中存在
14                */
15             Console.WriteLine( " 这3天组合Int为:  "+( int)wds);
16              /* 利用上面规则来判断枚举值中是否包含某个枚举值就轻而易举 */
17              if ((wds & WeekDays.Monday) !=  0)
18                 Console.WriteLine( " 星期一是其中一天 ");
19              if ((wds & WeekDays.Saturday) ==  0)
20                 Console.WriteLine( " 星期六不是其中一天 ");
21 
22              //(补充) 如果将某个值去掉的话可以按照原来采用这次方式
23              /*  将星期一从枚举变量中去掉
24               *  0100 0011
25               * &1011 1111 (~WeekDays.Monday)取反
26               * =0000 0011 这样就把星期一去掉啦!
27               */
28             wds = wds & (~WeekDays.Monday);
29             Console.WriteLine( " 去掉星期一后的效果:  "+wds);
30         }
复制代码
复制代码

 

运行结果

 

 

原文转载至:http://www.cnblogs.com/shouce/p/5395154.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值