枚举中HasFlag用法

位域通常用于由可组合出现的元素组成的列表,位域设计为通过按位“或”运算组合来生成未命名的值,而枚举常数则不是,位域通常用 2 的幂(即 1、2、4、8 、16等2的几次方)定义枚举常量,
这意味着组合的枚举常量中的各个标志都不重叠。

[Flags]   //Flags属性表示此枚举为位域枚举 定义时必须加,否则为枚举常量,使用HasFlag会出错

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        /*位域通常用于由可组合出现的元素组成的列表,
         *位域设计为通过按位“或”运算组合来生成未命名的值,而枚举常数则不是,
         *位域通常用 2 的幂(即 1、2、4、8 、16等2的几次方)定义枚举常量,
         *这意味着组合的枚举常量中的各个标志都不重叠。
       */
        [Flags]   //Flags属性表示此枚举为位域枚举 必须加
        enum week
        {
            Monday=1,
            Tuesday=2,
            Wednesday = 4,
            Thursday = 8,
            Friday = 16,
            Saturday = 32,
            Sunnday = 48
        }
        static void Main(string[] args)
        {
            week W = week.Friday;

            week w1 = week.Monday;
            week w2 = week.Tuesday;
            week w3 = week.Wednesday;
            week w4 = week.Thursday;
            week w5 = week.Friday;
            week w6 = week.Saturday;
            week w7 = week.Sunnday;

            bool res1 = W.HasFlag(w1);  //Flags属性表示此枚举为位域枚举 枚举定义时必须加,否则无效
            bool res2 = W.HasFlag(w2);
            bool res3 = W.HasFlag(w3);
            bool res4 = W.HasFlag(w4);
            bool res5 = W.HasFlag(w5);
            bool res6 = W.HasFlag(w6);
            bool res7 = W.HasFlag(w7);

            Console.WriteLine(res1);
            Console.WriteLine(res2);
            Console.WriteLine(res3);
            Console.WriteLine(res4);
            Console.WriteLine(res5);
            Console.WriteLine(res6);
            Console.WriteLine(res7);

            Console.ReadKey();
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值