-
01: 委托 事件 入门.pdf下载
资源介绍
C.委托语法糖
(1).注意到上面有3个地方我们都觉得“奇怪”:
a.调用委托对象dgObj(“JamesZou”);
b.向委托注册方法 dgObj+=DaZhaoHu;
c.将方法作为参数 DoTestDelegateFun(SayHi);
这些用法其实都是FW为我们提供的简便语法(它们有个可爱的名字:语法糖),在编译时由编译器转成完整的代码:
a. dgObj.Invoke(“JamesZou”);
b. dgObj = (DGSayHi) Delegate.Combine(dgObj, new DGSayHi(this.DaZhaoHu));
//Combine方法将第二个参数,添加到dgObj中,并返回委托对象。
c. this.DoTestDelegateFun(new DGSayHi(this.SayHi));
Delegate类、Invoke方法、Combine方法是哪来的呢?
(二)、委托原理
1.delegate 关键字
(1).概念:delegate 关键字用于声明一个引用类型,该引用类型可用于封装命名方法或匿名方法。
(2)编译后生成的的中间代码。
请大家思考一下,关键字是类型吗?不是。那编译器遇到这个关键字做了什么事情?借助【IL反汇编程序】 我们来看一看:
a.开始-程序-如图: