面向对象(十七)-多播委托与作业

1. 定义: 让一个委托指向多个方法

    1. 给委托增加一个方法 a+= function
    1. 给委托去掉一个方法 a-= function
    1. 多播委托的调用顺序,是按照添加方法的顺序来调用,先添加先调用。
    1. 如果委托的方法有返回值,那么只能得到调用的最后一个方法的结果。
static void Test1(){

  Console.WriteLine("Test1");

}

static void Test2(){

  Console.WriteLine("Test2");

}

static void Mian(string[] args){

  Action a = Test1;

  a += Test2; //表示增加一个委托引用

  a();

  // 输出 Test1 Test2

  a -= Test1; //去掉a对Test1的引用

  a -= Test2; //去掉a对Test2的引用

  // 如果一个委托没有指向任何方法,而去调用它,那么程序会crash。因此 最好在调用委托的方法的时候做一下判断

  if(a!=NULL){

    a();

  }
}

获取多播委托中所有委托的方法

Action a1 = Method1;

a1 += Method2;

Delegate[] delegates = a1.GetInvocationList();

foreach(delegate d in delegates){ // 遍历所有委托,然后单独调用

  d.DynamicInvoke(NULL);

}
  • 作业布置

1、要求使用委托 实现一个方法,给该方法传递两个浮点型参数,和一个运算方法,最终返回这两个数的运算结果 。

2、使用系统的List 中的sort方法 ,通过传递一个委托方法,对自定义的类(比如学生类)来按照自定义的方式(比如按照成绩、年龄、身高、体重之类的)来排序。

3、作业3

尝试给之前自定义的MyList类中, 添加一个sort方法,传递一个委托方法,可以自定义排序。 (也就是说实现作业2中系统的List中的那个sort方法)

4、作业4
回顾复习之前的知识点,包括上课的案例、代码。 之前的作业没做完的同学,尝试去完成。

作者:silence_k
链接:http://www.jianshu.com/p/3ab47e2bfdcb
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,766评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,948评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,349评论 25 708
  • 来到这个平台,仅仅练练笔,写下自己的一些感想,聊以解忧吧,写的会比较杂乱,如果有人看到感到不解的话,就先说声对不起咯。
    哇哈哈哈哦哈阅读 102评论 0 0
  • 如果,我只是说如果,人生可以没有那么多的记忆那么多的相遇,便不会有那么多的心痛、和那么多的无可奈何。 记忆穿过多年...
    青春染指流年1105阅读 354评论 0 1