zoukankan      html  css  js  c++  java
  • Part 36 to 39 Talking about Delegates in c#

    Part 36 Delegates in c#

    Part 37 Delegates usage in c#

    class Progim
        {
            public static void Main()
            {
                List<Employee> empList = new List<Employee>();
                empList.Add(new Employee() { ID = 101, Name = "Mary", Salary = 5000, Experience = 5 });
                empList.Add(new Employee() { ID = 102, Name = "Mike", Salary = 4000, Experience = 4 });
                empList.Add(new Employee() { ID = 103, Name = "John", Salary = 6000, Experience = 6 });
                empList.Add(new Employee() { ID = 104, Name = "Todd", Salary = 3000, Experience = 3 });
                Employee.PromoteEmployee(empList);
            }
        }
        class Employee
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public int Salary { get; set; }
            public int Experience { get; set; }
            public static void PromoteEmployee(List<Employee> employeeList)
            {
                foreach (Employee employee in employeeList)
                {
                    if (employee.Experience >= 5)  //this is hard code logic, next part we will using delegete replace it.
                        Console.WriteLine(employee.Name + "Promoted");
                }
            }
        }
    View Code

    Part 38 Delegates usage in c# contiued

     class Progim
        {
            public static void Main()
            {
                List<Employee> empList = new List<Employee>();
                empList.Add(new Employee() { ID = 101, Name = "Mary", Salary = 5000, Experience = 5 });
                empList.Add(new Employee() { ID = 102, Name = "Mike", Salary = 4000, Experience = 4 });
                empList.Add(new Employee() { ID = 103, Name = "John", Salary = 6000, Experience = 6 });
                empList.Add(new Employee() { ID = 104, Name = "Todd", Salary = 3000, Experience = 3 });
                IsPromotable isPromotable = new IsPromotable(Promote);
                Employee.PromoteEmployee(empList,isPromotable);
                //Employee.PromoteEmployee(empList,emp=>emp.Experience>5);
            }
            //it unnecessary to use this method,you can use lambda expression to replace it.
            public static bool Promote(Employee emp)
            {
                if (emp.Experience > 5)
                    return true;
                else
                    return false;
            }
        }
        delegate bool IsPromotable(Employee empl);
        class Employee
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public int Salary { get; set; }
            public int Experience { get; set; }
            public static void PromoteEmployee(List<Employee> employeeList, IsPromotable IsEligibleToPromote)
            {
                foreach (Employee employee in employeeList)
                {
                    if (IsEligibleToPromote(employee))  //this is hard code logic, next part we will using delegete replace it.
                        Console.WriteLine(employee.Name + "Promoted");
                }
            }
        }
    View Code

    Part 39 Multicast Delegates in C#

    A Multicast delegate is a delegate that has references to more than one function.When you invoke a multicast delegate, all the function the delegate is pointing to , are invoked.

    There are 2 approaches to create a multicast delegate. Depending on the approach you use + or += to register a method with delegate

    -or -=to un-register a method with the delegate

    Note: A multicast delegate, invokes the methods in the invocation list, in the same order in which they are added.

    if the delegate has a return type other than void and if the delegate is a multicast delegate, only the value of the last invoked method will be returned. Along the same lines, if the delegate has an out parameter, the value of the output parameter, will be the value assigned by the last method.

    Common interview question - where do you use multicast delegates?

    Multicast delegate makes implementation of observer(观察者) design pattem(模式) very simple. observer pattem is also called as publish/subscribe(订阅) pattem.

  • 相关阅读:
    第二章 装配Bean
    JAVAScript中DOM与BOM的差异分析
    前端中的命名规则
    用产生随机数的方法加上鼠标事件实现点击生成彩色积木
    关于AngularJs中监听事件及脏循环的理解
    前端工程师面(笔)试题部分汇总
    Js中获取显示器、浏览器以及窗口等的宽度与高度的方法
    实现选项卡切换的三种方式
    对于前端浅显理解
    js程序开发-3
  • 原文地址:https://www.cnblogs.com/gester/p/4870578.html
Copyright © 2011-2022 走看看