欢迎来到天天文库
浏览记录
ID:33703221
大小:58.09 KB
页数:17页
时间:2019-02-28
《C#C++C语言学会编程第12课委托和事件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第12课委托和事件委托是C#语言中一种引用方法的类型,和C++中处理函数指针的情况比较相似。不但可以向委托实例注册方法列表,而且还可以通过委托实例来调用方法列表中的方法。事件是一种特殊的委托,它包含两个参数:指示事件源的“对象源”参数和封装事件的其他任何相关信息的“e”参数。本章将讲解C#语言中的委托和事件,主要介绍以下知识点。�声明委托;�委托实例化;�委托调用;�声明事件;�注册事件和移除事件;�调用事件。12.1委托熟悉C++中函数指针的读者可能比较容易理解委托。委托(delegate)是一种数据结
2、构,它是用来处理类似于C++中函数指针的情况,即委托能够引用静态方法或引用类实例及其实例方法。特别地,委托是完全面向对象的,同时也封装了对象实例和方法。所有委托类型的基类是System.Delegate类。System.Delegate类本身不是委托类型,而且不允许显式地直接从该来派生新的类型。委托实例封装了一个调用列表,该列表包含了一个或多个方法,每个方法称为一个可调用实体。12.1.1委托声明委托类型的声明将创建一个协定,该协定指定一个或多个方法的签名。委托是委托类型的实例,它可以引用静态方法或者实例
3、方法。声明委托需要使用delegate关键字,语法如下。delegate-modifiersdelegatereturn-typeidentifierdelegate-modifiers表示委托的修饰符(可选),它包括new、public、protected、internal和private共5个关键字。其中,public、protected、internal和private修饰符控制委托的可访问性。它们的意义具体说明如下。�public修饰符,表示该委托是公开的,访问不受限制。�protected修饰符
4、,表示该委托只能是本身委托访问。�internal修饰符,表示该委托只能是在当前应用程序中访问。�private修饰符,表示该委托只能是本身访问。12.1.2创建向委托注册方法一旦声明一个委托之后,那么就指定了该委托方法列表中的方法签名,包括方法列表中的方法的返回类型和方法参数。如果一个方法能够注册到某一个委托中,那个该方法的签名必须与该委托的所指定的签名完全匹配。匹配规则如下。�方法的返回类型必须和委托的返回类型相同。�方法的方法参数必须和委托的方法参数相同,参数的具体名称可以不相同。12.1.3委托实
5、例化委托实例化可以创建委托类型的实例,并向该实例注册方法列表。委托类型的实例的方法列表可以为静态方法、实例方法或者另外一个委托实例。注意:委托实例化,它把静态方法、实例方法或者另外一个委托的名称作为该实例的方法参数进行传递。12.1.4委托的方法列表一个委托实例都必须包含其方法列表,方法列表可以包含一个或多个方法。委托实例除了在其实例化时注册方法之外,还可以通过“+”或“+=”运算符向该实例的方法列表中的注册方法,通过“-”或“-=”运算符向该实例的方法列表中的移除方法12.1.5委托调用一个委托实例的方
6、法列表,又称为该委托实例的调用列表。一个调用列表可能包含一个或多个方法。如果一个调用列表包含多个方法时,当该委托实例被调用时,它将按照调用列表中方法的注册顺序依次调用每一个方法。12.2事件事件(event)是一种使对象或类能够提供通知的成员。客户端可以通过提供事件处理程序为相应的事件添加可执行代码。客户端可以实现为事件定义一些操作或方法,当事件发生时,将调用该事件事先定义的操作或方法。12.2.1声明事件事件其实是一种特殊类型的委托,它包含两个参数:指示事件源的“对象源”参数和封装事件的其他任何相关信息
7、的“e”参数。其中,“e”参数的类型为System.EventArgs类型或从System.EventArgs类派生的类型。声明事件一般包括以下两个步骤。(1)声明事件的委托。(2)声明事件本身。12.2.2注册事件一个事件一旦声明之后,该事件的默认值为null。如果希望该事件执行事先指定的操作,则首先向该事件注册方法列表(即委托的调用列表)。注册事件可以使用“+=”运算符。12.2.3移除事件除了注册事件之外,还可以移除事件。移除事件使用“-=”运算符。12.2.4调用事件声明一个事件之后,如果没有向该
8、事件注册方法,那么该事件的值为空(null)。因此,在调用事件时,往往需要检查该事件是否为空。12.3实例一:测试打印事件【实例12-1】演示了测试打印事件的方法。该功能由TestPrintEvent类和PrintEventHandler委托实现。12.4小结本章主要介绍了C#语言中的委托和事件,如声明委托、委托实例化、委托调用、声明事件、注册事件、移除事件、调用事件等。其中,读者要着重掌握声明委托、委托调用、声明事件、注册事
此文档下载收益归作者所有