[Flags]
public enum Days
{
None = 0, //must have a specified 0
Sunday = 1 << 0, //1
Monday = 1 << 1, //2
Tuesday = 1 << 2, //4
Wednesday = 1 << 3, //8
Thursday = 1 << 4, //16
Friday = 1 << 5, //32
Saturday = 1 << 6, //64
Workdays = Monday | Tuesday | Wednesday | Thursday | Friday, // 0111110
Vacationdays = Saturday | Sunday, // 1000001
AllDays = Workdays | Vacationdays // 1111111
}
//Example:
public Days myDays = Days.Wednesday | Days.Friday; //myDays = 0101000
public bool containsTuesday = (myDays & Days.Tuesday) == Days.Tuesday ? true : false; // 0101000 & 0000100 = 0000000 (not 0000100, so expression is FALSE)
Console.WriteLine(containsTuesday); //output: false
//Operator cheat-sheet:
// & - apply mask
// | - combine
// ^ - combine/toggle, get difference
[Flags]
public enum Names
{
None = 0,
Susan = 1,
Bob = 2,
Karen = 4
}