ImageVerifierCode 换一换
格式:PPT , 页数:25 ,大小:136.50KB ,
文档编号:3622430      下载积分:22 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-3622430.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(C#程序设计43委托和事件课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

C#程序设计43委托和事件课件.ppt

1、单元4 C#进阶编程 知识目标 v(1)掌握结构化的异常处理机制;v(2)深刻理解委托和事件;v(3)掌握枚举和结构;v(4)掌握字符串的常用方法;v(5)掌握正则表达式的基本用法;v(6)掌握常用的集合类和泛型集合类。能力目标v(1)能够捕获并处理异常;v(2)能使用枚举或结构描述数据;v(3)能对文本进行较为复杂的处理;v(4)能使用正则表达式实现文本的验证;v(5)能定义和使用委托类型;v(6)能给对象添加事件并能处理事件;v(7)能使用集合类存储数据,能编写基于栈、队列、链表、哈希表等数据结构的程序。教学任务v任务1 异常处理v任务2 枚举和结构v任务3 委托和事件v任务4 字符串与正

2、则表达式v任务5 泛型和集合单元4 C#进阶编程任务3 委托和事件引例官兵抓强盗v当受害人呼叫“救命啊!”,强盗纷纷逃跑,官兵开始追捕强盗。知识储备v知识点1:委托的定义。v知识点2:实例化委托。v知识点3:调用委托。v知识点4:多播委托。v知识点5:事件的定义。v知识点6:订阅和引发事件。知识点1:委托的定义v委托可以理解为函数指针,也就是说它能够通过传递地址的机制完成引用函数,但是它比函数指针安全,也称为委托是类型安全的。而事件借助委托的帮助,使用委托调用已订阅事件的对象中的方法。v在前面介绍定义方法的时候,我们可以将基本数据类型作为方法的参数,也可以将类实例化的对象做为方法参数传递,而C

3、#提供的委托可以将方法作为参数传递。委托定义了方法的类型,使得方法可以当作另一个方法的参数来进行传递。v使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时,可以依次调用所有绑定的方法。定义委托v定义委托,其形式如下:v委托的定义用关键字“delegate”修饰。Login表示委托名,该委托接受2个参数。委托的一个要点是它们的类型安全性非常高。在定义委托时,必须给出委托所代表的方法的全部细节。委托的返回类型和参数共同组成为委托的签名。delegate void Login(string name,string password);示例:v定义一个委托Max,该委托代表的方法有两个int型

4、参数,返回类型为int。delegate int Max(int first,int second);知识点2:实例化委托v委托定义完后,就可以实例化委托了,实例化委托意味着引用某个方法。要实例化委托,就要调用该委托的构造函数,并将该委托关联的方法作为其参数传递。public delegate int Max(int first,int second);class MaxData public int IntMax(int a,int b)if(a b)return a;else return b;public double DoubleMax(double a,double b)if(a b

5、)return a;else return b;class Test static void Main()Max max;MaxData md=new MaxData();max=new Max(md.IntMax);/实例化委托 知识点3:调用委托v调用委托即是用委托对方法进行实例化,调用委托与调用方法类似,唯一的区别在于不是调用委托的实现,而是调用委托关联的方法。class Test static void Main()Max max;MaxData md=new MaxData();max=new Max(md.IntMax);int a=max(2,3);/调用委托 Console.W

6、riteLine(a.ToString();/max=new Max(md.DoubleMax);/错误代码,返回类型错误 /double b=max(2.0,3.0);/重载与委托不匹配 /Console.WriteLine(b.ToString();Console.ReadKey();实践任务1v使用委托实现三个数求最大值和最小值。知识点4:多播委托v前面介绍的委托中,每个委托都只包含一个方法的调用,在这种情况下,使用委托还不如直接使用方法来的直接,其实委托也可以包含多个方法,这个委托称为多播委托。v调用多播委托就可以连续调用多个方法,但委托的定义的返回类型必须是void,而编译器在返回类

7、型为void时,就会自动假定这是一个多播委托。v多播委托可以识别运算符+和+=,表示在委托中增加方法的调用,多播委托还识别运算符-和-=,表示从委托删除方法调用。示例:delegate void Del(string s);class TestClass static void Hello(string s)System.Console.WriteLine(Hello,0!,s);static void Goodbye(string s)System.Console.WriteLine(Goodbye,0!,s);static void Main()Del a,b,c,d;/Create th

8、e delegate object a that references /the method Hello:a=Hello;/Create the delegate object b that references /the method Goodbye:b=Goodbye;/The two delegates,a and b,are composed to form c:c=a+b;/Remove a from the composed delegate,leaving d,/which calls only the method Goodbye:d=c-a;System.Console.W

9、riteLine(Invoking delegate a:);a(A);System.Console.WriteLine(Invoking delegate b:);b(B);System.Console.WriteLine(Invoking delegate c:);c(C);System.Console.WriteLine(Invoking delegate d:);d(D);知识点5:事件的定义vC#使用delegate和event关键字提供了一个简洁的事件处理方案。C#中类和对象可以通过事件向其他类或对象通知发生的相关事情。将发生的事件通知给其他对象的对象称为发行者,一个对象订阅事件后

10、,该对象成为订阅者。一个事件可以有一个或者多个订阅者,事件的发行者也可以是该事件的订阅者。事件定义的语法vevent关键字用在发行者类中声明事件。定义事件时,发行者首先定义委托,然后根据该委托定义事件。访问修饰符 event 委托名 事件名 public delegate void EventHandler(Object sender,EventArgs e);public event EventHandler NoDataEventHandler;事件具有以下特点:v发行者确定何时引发事件,订户确定执行何种操作来响应该事件。v一个事件可以有多个订户,一个订户可以处理来自多个发行者的多个事件。

11、v没有订户的事件永不被调用。知识点6:订阅和引发事件v订阅事件v订阅事件只是添加了一个委托,当引发事件时,该委托将调用一个方法。订阅事件的形式如下:v代码中,ex对象订阅了事件NoDataEventHandler。当事件NoDataEventHandler被引发时,则会执行名为ex_NoDataEventHandler的方法。EventExample ex=new EventExample();ex.NoDataEventHandler+=new EventExample.EventHandler(ex_NoDataEventHandler);引发事件v引发事件和调用方法类似,引发事件时,将调

12、用订阅此特定事件的对象的所有委托,如果没有对象订阅该事件,则事件引发时,会发生异常。【例4-2】比较两个数的大小。class EventExample public delegate void DelegateMax(int first,int second);public event DelegateMax EventMax;public void IntMax(int a,int b)Console.WriteLine(判断两个数的大小0和1,较大的是:,a,b);EventMax(a,b);class Test static void Main()EventExample ee=new

13、EventExample();ee.EventMax+=new EventExample.DelegateMax(ee_EventMax);/订阅事件 ee.IntMax(2,3);/引发事件 Console.ReadKey();static void ee_EventMax(int first,int second)if(first second)Console.WriteLine(first);else Console.WriteLine(second);实践任务2v为实践任务1中的委托定义事件、订阅事件及激发事件。引例分析与实现v官兵抓强盗实现,当受害人呼喊“救命”的时候,只有强盗和官兵

14、才有相应的行动,其他的无行动。class Robber public void runaway()Console.WriteLine(逃跑);class Police public void chase()Console.WriteLine(哪里跑);class Human public delegate void humandelegate();public event humandelegate humanevent;public void Help()humanevent();class Program static void Main(string args)Human h=new H

15、uman();Robber r1=new Robber();Robber r2=new Robber();Police p1=new Police();Police p2=new Police();h.humanevent+=new Human.humandelegate(h_humanevent);h.humanevent+=r1.runaway;h.humanevent+=r2.runaway;h.humanevent+=p1.chase;h.humanevent+=p2.chase;h.Help();Console.ReadKey();static void h_humanevent()Console.WriteLine(救命啊);归纳总结v知识要点:v(1)委托类型定义方法。v(2)委托的使用。v(3)定义事件、订阅事件和激发事件。拓展实践v为汽车类设计“加油”事件。

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|