第4章C#中的高级概念讲述.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章C#中的高级概念讲述

第4章 C#中的高级概念 4.1 异常 4.2 委托 4.3 事件 4.4 泛型 4.5 几种特殊类 4.6 字符串和正则表达式 异常是程序运行时产生的错误(如除数为0、网络连接断开等),这种错误和编译错误不同,一般很难在编译时发现,而是在程序运行时产生。如果在程序开发环节没有采取异常处理措施,则程序在发布以后,当用户不小心触发了潜在的异常时,程序就有可能发生崩溃。因此,异常处理就是一个健壮性程序的必要组成部分。 为了能够及时有效地处理程序中的运行错误,作为面向对象的编程语言,在C# 里,引入了异常类。 4.1 异常 4.1.1 异常类 4.1.2 try和catch块 4.1.3 使用throw引发异常 4.1.4 finally 4.1.1 异常类 在C#中,.Net框架提供了大量的异常类,这些类存储了各种异常的相关信息和帮助。部分异常类的层次继承结构如图所示。 4.1.2 try和catch块 异常处理的中心是try和catch。这两个关键字通常混合在一起使用。try/catch异常处理模块的语法如下: try { //程序代码 } catch(Exception e) { //异常处理代码 } 【例4-1】try和catch语句的使用示例 【例4-2】try和多个catch语句的使用示例 4.1.3 使用throw引发异常 若在try块中出现异常,系统将隐式抛出异常,并由随后的catch块捕捉并处理。那么,有没有一种语法能将异常显式地抛给程序并进行处理呢?可以使用throw关键字完成。throw命令只有一个参数,即要抛出的异常对象。 【例4-3】throw语句的使用示例 【例4-4】利用throw语句抛出自定义异常示例 4.1.4 finally 异常处理必须考虑的一个问题是,异常的发生可能引起当前方法的中断,使其过早返回调用者。但是,此方法或许已经打开了某个的文件或建立了数据连接,如果不及时释放这些资源,将会带来一系列问题。C#提供了一个可选的finally块。finally 块的代码用来清理资源或执行要在try块中未执行的其他操作,且无论是否产生异常,finally块都会执行。 【例4-5】finally块使用示例 4.2 委托 4.2.1委托的定义 4.2.2 委托的实例化和使用 4.2.3匿名方法 4.2.4 多路广播委托 4.2.5 多重委托 4.2.1委托的定义 在C#中,定义委托的语法如下: 访问修饰符 delegate 返回类型 DelegateName(参数列表); 4.2.2 委托的实例化和使用 委托是一个类型,定义委托后,必须实例化才能使用。实例化委托的过程就是将委托和方法关联的过程。实例化委托时,将会调用委托的构造函数,并将与委托相关联的方法地址(即方法名)作为参数传递给它。 【例4-6】委托的实例化与使用 4.2.3匿名方法 上面的示例中,委托所关联的方法被称为使用命名的方法。然而为方法创建一个委托,然后通过这个委托调用该方法,在实际中并没有太大意义,因为直接调用方法反而更简单。但当涉及匿名方法时,委托才真正显示出效用。 4.2.4 多路广播委托 前面使用的委托只包含一个方法调用。调用委托的次数与调用方法的次数相同。如果要调用多个方法,就需要多次显示调用这个委托。其实委托也可以包含多个方法,这种委托就是多路广播委托。多路广播委托派生于System.MulticastDelegate。我们可以通过+=来向委托添加调用方法,也可以用-=删除其中的调用方法。 4.2.5 多重委托 多重委托(multicast delegate)是由两个或更多的其它委托构成的委托。它可以封装一个或多个方法。当调用多重委托时,会逐个调用封装的所有方法。 在c#中,通过使用“+”(加法)运算符,可以把某个委托添加到一个多重委托中。类似地,通过“-”(减法)运算符,可以把某个委托从多重委托中删除。也可以把多个委托添加到一个多重委托中。当多重委托被调用时,已经添加委托就按其添加的顺序调用。 【例4-9】多重委托示例 4.3 事件 什么是事件呢?事件和委托有什么关系和区别呢? 在4.2节中,假设小王是你的委托人,帮助你给客户发送资料。当然他采取多种方法完成这个任务,可以发送传真或Email,而且这些方法必须在使用委托之前和委托关联。在本节中,我们用另外一种方式来模拟这个场景。假设,你已事先对小王说,“随时为我服务”。这样,一旦你要发送客户资料,秘书小王一得到这个消息,就马上为你服务。当然,其他人即使得到这个消息也不会为你发送资料的。 现在从程序员的角度来看这个场景,当你向外需要发送资料时,事件发生了。你就是事件的发布者,向外发布一个事件。秘书小王就是事件的订户。他依据事件进行相应

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档