C# 请问 委托 和 事件 到底有什么区别?

既然说事件的本质就是一条委托链,事件呢,的确是用委托来声明的,那么请问为什么不能直接用委托来代替事件?知道的朋友请告诉我一下,最好例出不能用委托代替事件的场合,谢谢!... 既然说 事件 的本质 就是一条委托链, 事件呢,的确是用委托来声明的, 那么请问为什么不能直接用委托来代替事件?

知道 的朋友请告诉我一下,最好例出不能用委托代替事件的场 合,谢谢 !
展开
 我来答
XCExceXCExce
2011-09-12 · TA获得超过647个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:336万
展开全部
事件是类在发生其被关注的事情时用来提供通知的一种方式。 
使用事件,对象A可以将关于事件或已发生变化的信息通知其他对象B。 
引发事件的对象称为事件发送方源。 
捕获事件并对其作出响应的对象叫做事件接收方。
在事件通信中,发送方不知道哪个对象或方法将接收【处理】它引发的事件。故需要在发送方和接收方之间存在一个媒介【或类似 指针的机制】。.NET Framework 定义了一个特殊的类型 (Delegate),该类型提供函数指针的功能。 
事件使用委托来为触发时将调用的方法提供类型安全的封装。

这段话是我珍藏的,比较抽象。
为什么不能直接用委托代替事件?我个人觉得,在事件通讯这个模式下,这是规定好的:事件+=委托(方法)。如果按您的想法,直接委托+方法,那么接收方如何知道你到底干了什么事情,是双击了button,还是单击了一下窗体,又或者干了其他事情。首先没有方法知道,那么接收方调用哪个委托(方法)呢?
您好好看看刚开始的那段话,应该会有很大帮助。
淦琳溪l7
2011-09-12 · TA获得超过336个赞
知道答主
回答量:172
采纳率:0%
帮助的人:80.4万
展开全部
委托是事件的基础,事件在一个方法内部,委托在外部定义,在内部运用,所以说,委托是事件的基础。一个委托可以定义多个事件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-09-12
展开全部
事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托.

通俗的讲,委托你可以在客户代码中直接调用委托来激发委托指向的函数,而事件不可以,事件的触发只能由服务代码自己触发

也就是说在你的代码里委托你不但可以安排谁是它的调用函数,还可以直接调用它,而事件不能直接调用,只能通过某些操作触发

你可以理解事件就是一个或多个委托,此话应该有误的吧,事件可以有多个事件处理函数,委托同样也可以是个多播委托
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友15f8fbd
2011-08-30 · TA获得超过407个赞
知道小有建树答主
回答量:176
采纳率:100%
帮助的人:89.2万
展开全部
事件就是一种特殊的委托。委托是一种安全的类似与函数指针,但是她比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。事件是一种消息机制,它是一种委托,委托不带方法体。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
正牌小卡
2011-09-12 · TA获得超过207个赞
知道小有建树答主
回答量:499
采纳率:66%
帮助的人:150万
展开全部
最 简单的解释就是:事件是由系统来给你管理什么时候要执行某个函数。而委托是由人来操作什么时候执行某个函数的。一个是自动的,一个是人为的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
军曜坤qN
2011-08-30 · 超过37用户采纳过TA的回答
知道答主
回答量:140
采纳率:0%
帮助的人:64.7万
展开全部
你可以在代码中直接调用委托来激发委托指向的函数,而事件不可以,事件的触发只能由服务代码自己触发.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式