文件名称:01: 委托 事件 入门.pdf
文件大小:718KB
文件格式:PDF
更新时间:2022-09-10 10:02:16
委托 事件 入门
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.开始-程序-如图: