委托delegate

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值