位域通常用于由可组合出现的元素组成的列表,位域设计为通过按位“或”运算组合来生成未命名的值,而枚举常数则不是,位域通常用 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();
}
}
}