枚举中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();
        }
    }
}

枚举中HasFlag用法_第1张图片

你可能感兴趣的:(C#,.net)