/// <summary>
/// 当添加了[flags]属性,编辑器会认为一个位代表一个枚举
/// 所以当出来 0x0000 0011 的时候,会变成前两个枚举的值
/// </summary>
[Flags]
enum Weekdays
{
/// <summary>
/// 为了更方便看出来枚举的位运算,才这样写
/// 正常可以写成0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80
/// </summary>
Monday = 0x00000001,
Tuesday = 0x00000010,
Wednesday = 0x00000100,
Thursday = 0x00001000,
Friday = 0x00010000,
Saturday = 0x00100000,
Sunday = 0x01000000
}
public static void Main(string[] args)
{
//添加flag
Weekdays weekday = Weekdays.Wednesday | Weekdays.Monday | Weekdays.Tuesday;
Console.WriteLine(weekday);
//判断是否有此flag
Console.WriteLine(weekday.HasFlag(Weekdays.Wednesday));
Console.WriteLine((weekday & Weekdays.Wednesday)!=0);
//去掉一个flag
weekday &= (~ Weekdays.Wednesday);
Console.WriteLine(weekday);
}