委托类型:delegate type
用来表示对具有特定参数列表和返回类型的方法的引用。
委托将方法处理为实例,使其能够被赋值给变量,并作为参数传递。类似于C++中的函数指针的概念,不同函数指针,委托是面向对象和类型安全的。
委托可以引用静态和动态类型。
委托不关心所封装方法所属类,只关心这些方法的参数和返回类型。
.NET 使用 event 关键字来指定事件。
事件是类在发生其关注的事情时用来提供通知的一种方式。例如,封装用户界面控件的类可以定义一个在用户单击该控件时发生的事件。控件类不关心单击按钮时发生了什么,但它需要告知派生类单击事件已发生。然后,派生类可选择如何响应。
事件使用委托来为触发时将调用的方法提供类型安全的封装。委托可以封装命名方法和匿名方法。
事件具有以下特点:
* 事件是类用来通知对象需要执行某种操作的方式。
* 尽管事件在其他时候(如信号状态更改)也很有用,事件通常还是用在图形用户界面中。
* 事件通常使用委托事件处理程序进行声明。
* 事件可以调用匿名方法来替代委托。
事件处理程序委托的标准签名定义一个没有返回值的方法,其第一个参数的类型为 Object,通常命名为 sender,它引用引发事件的实例,第二个参数从 EventArgs 类型派生,通常命名为 e,它保存事件数据。如果事件不生成事件数据,则第二个参数只是 EventArgs 的一个实例。否则,第二个参数为从 EventArgs 派生的自定义类型,提供保存事件数据所需的全部字段或属性。