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);
        }

结果

 

转载于:https://www.cnblogs.com/cn2018/p/8967316.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值