C#的Enum中Flags的用法
Flags关键字允许我们在使用.net 枚举变量时,使用多个组合值
在项目中提前设计,使用起来非常便捷
网上copy一个例子
[Flags] enum WeekDays { //注意: 这里不要将Sunday设置为0x0,至于为什么留给大家思考 Monday = 0x1, Tuesday = 0x2, Wednesday = 0x4, Thursday = 0x8, Friday = 0x10, Saturday = 0x20, Sunday = 0x40 }
static void TestEnumFlags() { /************Kingmoon Lab 之 enum flags 语法*********************/ /*用'|'将各个枚举值分开即可*/ WeekDays wds = WeekDays.Monday | WeekDays.Sunday | WeekDays.Tuesday; Console.WriteLine("我这3天要来大姨妈:"+wds); /* 我们来看看计算过程: * 或运算: 0000 0001 --星期一 0x1 或 0100 0000 --星期六 0x20 或 0000 0010 --星期二 0x2 = 0100 0011 = 67 *换句话说: 某个位是1就代表了这个位上的值在枚举中存在 */ Console.WriteLine("这3天组合Int为: "+(int)wds); /*利用上面规则来判断枚举值中是否包含某个枚举值就轻而易举*/ if ((wds & WeekDays.Monday) != 0) Console.WriteLine("星期一是其中一天"); if ((wds & WeekDays.Saturday) == 0) Console.WriteLine("星期六不是其中一天"); //(补充)如果将某个值去掉的话可以按照原来采用这次方式 /* 将星期一从枚举变量中去掉 * 0100 0011 * &1011 1111 (~WeekDays.Monday)取反 * =0000 0011 这样就把星期一去掉啦! */ wds = wds & (~WeekDays.Monday); Console.WriteLine("去掉星期一后的效果: "+wds); }
结果