深入理解C#中的委托与事件
1. 引言
用户与计算机之间的交互是计算的基本组成部分。过去,我们使用过程式编程模型,如一次询问用户一行(或一个字符)输入的命令行程序。如今,我们有了更复杂的程序,具有丰富的图形用户界面(GUI)和事件驱动编程。为了便于编写事件驱动程序,一种语言必须提供对事件处理的支持。Java通过在其抽象窗口工具包(AWT)事件处理模型中使用内部类适配器来提供这种支持。而C#则通过委托来实现事件处理。
委托本质上是对某个方法的引用。当声明委托时,会为其分配一个方法签名。应用程序可以将任何符合该签名的方法分配给委托变量。当调用该委托变量时,会调用关联的方法。如果你有C/C++背景,可以将委托看作与函数指针非常相似。然而,与函数指针不同的是,委托是面向对象、类型安全且安全的。
2. 委托概述
2.1 委托的定义
委托是对某个方法的引用,它类似于其他变量,但代表的是一个方法。例如,整数类型可以保存符合整数描述的任何值,类引用可以引用任何对象,只要该对象是正确的类型。委托可以引用任何方法,只要它具有特定的签名。例如,可以指定一个委托引用一个返回整数并接受一个字符串类型参数的方法。然后,它可以保存对具有该签名的任何方法的引用,并使用该委托来调用该方法。从这个意义上说,委托对象实际上只是一个变量,但它保存的是具有预定签名的方法,而不是整数或类类型。
委托允许动态调用方法的能力使其非常强大。委托引用的方法(或多个方法)在运行时分配,并且可以随意添加和删除。因此,委托特别适用于事件处理程序和回调函数,它们在.NET框架中主要用于这些方面。
2.2 委托的声明
需要注意的是
超级会员免费看
订阅专栏 解锁全文
829

被折叠的 条评论
为什么被折叠?



