博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
委托delegate
阅读量:7250 次
发布时间:2019-06-29

本文共 1780 字,大约阅读时间需要 5 分钟。

  hot3.png

1、当要把方法传送给其他方法时,需要使用委托。

2、某个方法执行的操作是对另一个方法进行操作,编译时不知道第二个方法是什么,这个信息只能在运行时得到。

3、Thread类的构造函数必须带有一个参数,该参数定义了线程调用的方法。

4、通用类库,包含执行各种标准任务的代码,有时需要客户端定义细节。

5、事件,一般是通知代码发生了什么事件,把处理事件的方法作为一个参数传递给委托。

6、如果要传递方法,就必须把烦烦噶的细节封装在一个新类型的对象中,即委托。

7、委托只是一种特殊类型的对象,包含一个或多个方法的地址。

8、定义委托就是告诉编译器这种类型的委托标识哪种类型的方法。

9、delegate void IntMethodInvoker(int x)。

10、该方法带有一个int参数,并返回void。

11、在定义委托时必须给出它所标识的方法的签名和返回类型等全部细节。

12、委托在语法上总是接收一个参数的构造函数,这个参数就是委托引用的方法。

13、委托实例提供圆括号与调用委托类的Invoke()方法完全相同。

14、需要委托实例,就可以只传送地址的名称,这称为委托推断。

15、没有委托,就不能完成很多工作。

16、把方法组合到一个数组中使用,这样就可以在循环中调用不同的方法了。

17、除了为每个参数和返回类型定义一个新委托之外,还可以使用Action<T>和Func<T>委托。

18、泛型Action<T>委托表示引用一个void返回类型的方法。

19、Func<T>允许调用带返回类型的方法。

20、对于接收类型T的泛型方法Sort<T>,需要一个比较方法,其两个参数的类型都是T。

21、委托也可以包含多个方法,这种委托称为多播委托。

22、如果要调用多播委托,就可以按顺序连续调用多个方法,委托的签名就必须返回void,否则就只能得到委托调用的最后一个方法的结果。

23、多播委托可以识别运算符"+"和"+=",还可以识别运算符"-"和"-="。

24、同一个委托调用方法链的顺序并未正式定义,因此避免编写依赖于特定顺序调用方法的代码。

25、多播包含一个逐个调用的委托集合,如果通过委托调用的其中的一个方法抛出异常,整个迭代就会停止。

26、自己迭代方法列表,Delegate类定义GetInvocationList()方法,返回一个Delegate对象的数组。

27、匿名方法用作委托的参数的一段代码。减少了要编写的代码,不必定义仅由委托使用的方法。不能使用跳转语句跳到匿名方法外部,不能访问匿名函数方法外部使用的ref和out参数。但可以使用匿名方法外部定义的其他变量。

28、多次编写同一功能,就不要使用匿名函数。

29、一种新的语法把实现代码赋予委托,Lambda表达式。

30、只要委托参数类型的地方,就可以使用Lambda表达式。

31、Lambda运算符"=>"的左边列出了需要的参数。右边定义了赋予lambda变量的方法的实现代码。

32、Lambda表达式有几种定义参数的方式,如果只有一个参数,只写出参数名就足够了。

33、如果委托使用多个参数,就把参数名放在花括号中。花括号中给变量名添加参数类型。

34、Lambda表达式只有一条语句,在方法块内就不需要花括号和return语句。

35、通过Lambda表达式可以访问Lambda表达式块外部的变量。

36、以后要修改someVal的值,调用Lambda表达式时,会使用someVal的新值。

37、编译器会创建一个匿名类,它有一个构造函数来传递外部变量。

38、事件基于委托,为委托提供了一种发布,订阅机制。

39、CarDealer类提供了EventHandler<CarInfoEventArgs>类型的NewCarInfo事件。

40、作为一个约定,事件一般使用带两个参数的方法,其中第一个参数是一个对象,包含事件

的发送者,第二个参数提供了事件的相关信息。

41、+=创建一个订阅,-=取消订阅。

42、使用弱事件,需要创建一个派生自WeekEventManager类的类。管理NewCarInfo事件

的发布程序和侦听器之间的连接。可以垃圾回收侦听器了。

转载于:https://my.oschina.net/loveyj/blog/207051

你可能感兴趣的文章
ES6学习之一
查看>>
专访何红辉:谈谈Android源码中的设计模式
查看>>
超2亿中国用户简历曝光!MongoDB又一重大安全事故
查看>>
网易云信周梁伟专访:亿级架构IM平台的技术难点解析
查看>>
独家揭秘腾讯千亿级参数分布式机器学习系统无量
查看>>
Dubbo Mesh在闲鱼生产环境的落地实践
查看>>
微软Build 2017第二天:跨平台跨硬件开发体验
查看>>
精益项目管理的可行性分析
查看>>
Bitbucket Pipelines在Atlassian的Bitbucket云上提供持续交付功能
查看>>
举重若轻的人人车移动端数据平台
查看>>
建立自组织敏捷团队
查看>>
PayPal API风格指南和设计模式
查看>>
02-Docker新手入门网络篇
查看>>
大神 Linus Torvalds 语录
查看>>
[LintCode/LeetCode] Find Median From / Data Stream Median
查看>>
Android开发套路收集整理与讨论
查看>>
代码规范的重要性,我已经放弃治疗
查看>>
笨办法学C 练习30:自动化测试
查看>>
mui初级入门教程(五)— 聊聊即时通讯(IM),基于环信 web im SDK
查看>>
[vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件
查看>>