zoukankan      html  css  js  c++  java
  • 委托和事件的理解


    委托
      ①委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数进行传递,这种将方法动态地附给参数的作法,可以避免在程序中大量使用if--else(switch)语句,同时使得程序有更好的可扩展性。
      ②使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。
    事件
      ①事件也是一个委托,它是一个特殊的委托,一般由event来修饰,event它封装了委托类型的变量,使得:在类的内部,不管你声明它是public还是protected,它总是private的。在类的外部,注册“+=”和注销“-=”的访问限定符在声明事件时使用的访问符相同
      ②被event修饰的委托只能出现在“+=”或“-=”的左侧。
    如下代码:
    public class GreetingManager
    {    
    //这一次我们在这里声明一个事件
        public event GreetingDelegate MakeGreet;
        public void GreetPeople(string name) 
        {
            MakeGreet(name);
        }
    }
        
    
    为了证明上面的推论,如果我们像下面这样改写Main方法:
    static void Main(string[] args) 
    {
        GreetingManager gm = new GreetingManager();
        gm.MakeGreet = EnglishGreeting; // 编译错误1
        gm.MakeGreet += ChineseGreeting;
        gm.GreetPeople("Jimmy Zhang");
    }
    
  • 相关阅读:
    BZOJ3674:可持久化并查集加强版
    BZOJ3772:精神污染
    BZOJ3932:[CQOI2015]任务查询系统
    BZOJ3123:[SDOI2013]森林
    BZOJ1926:[SDOI2010]粟粟的书架
    029 列表类型内置方法
    02 Python爬虫之盗亦有道
    01 Python爬虫之Requests库入门
    028 字符串类型内置方法
    027 数字类型内置方法
  • 原文地址:https://www.cnblogs.com/NaiHe0630/p/8805504.html
Copyright © 2011-2022 走看看