Beispiel #1
0
        static void Main(string[] args)
        {
            //var del1 = new WorkPerformedHandler(WorkPerf1);
            //var del2 = new WorkPerformedHandler(WorkPerf2);
            //var del3 = new WorkPerformedHandler(WorkPerf3);

            //del1(5, WorkType.Golf);
            //del2(10, WorkType.GenerateReports);

            //del1 += del2;
            //del1 += del3;
            //del1(10, WorkType.GoToMeetings);

            //del1 += del2 + del3;
            //var totalH = del1(11, WorkType.GoToMeetings);
            //Console.WriteLine(totalH);
            var pd = new ProcessData();

            pd.Process(2, 3, (a, b) => a * b);

            pd.ProcessAction(2, 3, new Action <int, int>((x, y) => Console.WriteLine(x + y)));

            var result = pd.ProcessFunction(3, 2, new Func <int, int, int>((x, y) => x - y));

            Console.WriteLine("Result of function is " + result);

            Worker worker = new Worker();

            worker.WorkPerformed += new EventHandler <WorkPerformedEventArgs>(Worker_WorkPerformed);
            worker.WorkCompleted += Worker_WorkCompleted;
            worker.WorkCompleted += delegate(object sender, EventArgs a)
            {
                Console.WriteLine("Success - via anonymous method");
            };
            worker.WorkCompleted += (s, e) => Console.WriteLine("Yay - via Lambda");
            worker.DoWork(8, WorkType.GenerateReports);
        }
Beispiel #2
0
        private static void Main(string[] args)
        {
            var customers = new List <Customer>
            {
                new Customer {
                    City = "Phoenix", FirstName = "John", LastName = "Doe", ID = 1
                },
                new Customer {
                    City = "Phoenix", FirstName = "Jane", LastName = "Doe", ID = 500
                },
                new Customer {
                    City = "Seattle", FirstName = "Suki", LastName = "Pizzoro", ID = 3
                },
                new Customer {
                    City = "New York City", FirstName = "Michelle", LastName = "Smith", ID = 4
                }
            };

            var pxhCustomers = customers
                               .Where(c => c.City == "Phoenix" && c.ID < 500)
                               .OrderBy(c => c.FirstName);

            foreach (var cust in pxhCustomers)
            {
                Console.WriteLine($"{cust.LastName}, {cust.FirstName} from {cust.City }");
            }

            BizRulesDeleate addDel      = (x, y) => x + y;
            BizRulesDeleate multiplyDel = (x, y) => x * y;

            var data = new ProcessData();

            data.Process(2, 3, addDel);
            data.Process(2, 3, multiplyDel);

            Action <int, int> myAction         = (x, y) => Console.WriteLine("add action " + (x + y));
            Action <int, int> myMultiplyAction = (x, y) => Console.WriteLine("multiply action " + (x * y));

            data.ProcessAction(2, 3, myAction);
            data.ProcessAction(2, 3, myMultiplyAction);

            Func <int, int, int> functionAddDelegate      = (x, y) => x + y;
            Func <int, int, int> functionMultiplyDelegate = (x, y) => x * y;

            data.ProcessFunction(3, 2, functionAddDelegate);
            data.ProcessFunction(3, 2, functionMultiplyDelegate);

            var worker = new Worker();

            //            worker.WorkPerformed += new EventHandler<WorkPerformedEventArgs>(WorkPerformed);
            //            worker.WorkCompleted += new EventHandler(WorkCompleted);

            // delegate inference:
            //            worker.WorkPerformed += WorkPerformed;
            //            worker.WorkCompleted += WorkCompleted;

            // to remove the delegate from the handler:
            //            worker.WorkCompleted -= WorkCompleted;

            // anonymous methods:
            //            worker.WorkPerformed +=
            //                delegate (object o, WorkPerformedEventArgs e)
            //                {
            //                    Console.WriteLine($"Work Performed: {e.Hours} hour(s) of {e.WorkType}");
            //                };
            //            worker.WorkCompleted += delegate(object o, EventArgs e) { Console.WriteLine("Work completed"); };

            // lambdas
            worker.WorkPerformed += (o, e) =>
            {
                Console.WriteLine($"Work Performed: {e.Hours} hour(s) of {e.WorkType}");
                Console.WriteLine("This line just shows how you can have multiple lines of code in a lambda.");
            };
            worker.WorkCompleted += (o, e) => Console.WriteLine("Work completed");

            worker.Dowork(8, WorkType.GenerateReports);
        }