C#中的委托能否取代事件

来源:百度知道 编辑:UC知道 时间:2024/05/12 20:43:40

事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的,也可能是由某些其他的程序逻辑触发的。引发事件的对象称为事件发送方。捕获事件并对其作出响应的对象叫做事件接收方。

在事件通信中,事件发送方类不知道哪个对象或方法将接收到(处理)它引发的事件。所需要的是在源和接收方之间存在一个媒介(或类似指针的机制)。.NET Framework 定义了一个特殊的类型( Delegate),该类型提供函数指针的功能。

委托是可保存对方法的引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调。虽然委托具有许多其他的用途,但这里只讨论委托的事件处理功能。一个委托声明足以定义一个委托类。声明提供委托的签名,公共语言运行库提供实现。下面的示例显示了事件委托声明。

也就是说委托是事件的媒介,所以委托不能取代事件

我的理解是事件好比是对委托型变量的一个封装(添加了两个函数,add和remove),而且它要求委托的类型只能是void的.而委托的作用范围要大得多,声明的时候也没有那么多的限制.

同意楼上,具体您可以去查阅MSDN,委托和事件是一套组合拳,缺一不可的

呵呵,事件是基于委托的,你问的有问题