public Person(string firstName, string lastName, int age, DaysOfWeekEnum dayOfBirth)
 {
     Id         = new Random().Next(1, 99999);
     FirstName  = firstName;
     LastName   = lastName;
     Age        = age;
     DayOfBirth = dayOfBirth;
 }
Пример #2
0
        static void Main(string[] args)
        {
            EnumBitwiseOperators enumBitwise = new EnumBitwiseOperators();

            Employee john = new Employee
            {
                Name = "John",
                AvailableForWorkDays = DaysOfWeekEnum.Monday | DaysOfWeekEnum.Wednesday | DaysOfWeekEnum.Weekend // bitwise OR operator to store multiple enum values
            };

            Employee sarah = new Employee
            {
                Name = "Sarah",
                AvailableForWorkDays = DaysOfWeekEnum.Monday | DaysOfWeekEnum.Tuesday | DaysOfWeekEnum.Friday
            };

            Console.WriteLine("John can only work " + john.AvailableForWorkDays);
            Console.WriteLine("Sarah can only work " + sarah.AvailableForWorkDays);

            DaysOfWeekEnum daysCoveredByEitherEmployee = enumBitwise.OperatorOR(john.AvailableForWorkDays, sarah.AvailableForWorkDays);// days that are covered by either employee

            Console.WriteLine("Days covered by either employee: " + daysCoveredByEitherEmployee);

            DaysOfWeekEnum daysCoveredByBothEmployees = enumBitwise.OperatorAND(john.AvailableForWorkDays, sarah.AvailableForWorkDays);// days that are covered by both employee's

            Console.WriteLine("Days covered by both employee's: " + daysCoveredByBothEmployees);

            DaysOfWeekEnum daysCoveredByAtLeastOneButNotBoth = enumBitwise.OperatorXOR(john.AvailableForWorkDays, sarah.AvailableForWorkDays);

            Console.WriteLine("Days covered by one but not both: " + daysCoveredByAtLeastOneButNotBoth);

            //Add Saturday to sarah
            sarah.AvailableForWorkDays = enumBitwise.SetFlag(sarah.AvailableForWorkDays, DaysOfWeekEnum.Saturday);
            Console.WriteLine("Sarah got Saturday :(            " + sarah.AvailableForWorkDays);

            //John got weekend off lol
            john.AvailableForWorkDays = enumBitwise.UnsetFlag(john.AvailableForWorkDays, DaysOfWeekEnum.Weekend);
            Console.WriteLine("John got weekend off(yay)            " + john.AvailableForWorkDays);

            Console.ReadKey(true);
        }
 public DaysOfWeekEnum OperatorOR(DaysOfWeekEnum a, DaysOfWeekEnum b)
 {
     return(a | b);
 }
 public DaysOfWeekEnum ToogleFlag(DaysOfWeekEnum a, DaysOfWeekEnum b)
 {
     return(a ^ b); //XOR operator allows the "Toggle" functionality
 }
 // Works with "None" as well
 public bool HasFlag(DaysOfWeekEnum a, DaysOfWeekEnum b)
 {
     return((a & b) == b); // if a AND b has b
 }
 public DaysOfWeekEnum UnsetFlag(DaysOfWeekEnum a, DaysOfWeekEnum b)
 {
     return(a & (~b));// a AND NOT b removes b flag
 }
        //Useful methods with flags

        public DaysOfWeekEnum SetFlag(DaysOfWeekEnum a, DaysOfWeekEnum b)
        {
            return(a | b); //uses OR operator so if flag is already set, nothing changes
        }
 public DaysOfWeekEnum OperatorNOT(DaysOfWeekEnum a)
 {
     return(~a);
 }
 public DaysOfWeekEnum OperatorAND(DaysOfWeekEnum a, DaysOfWeekEnum b)
 {
     return(a & b);
 }