C# 请问 委托 和 事件 到底有什么区别?
既然说事件的本质就是一条委托链,事件呢,的确是用委托来声明的,那么请问为什么不能直接用委托来代替事件?知道的朋友请告诉我一下,最好例出不能用委托代替事件的场合,谢谢!...
既然说 事件 的本质 就是一条委托链, 事件呢,的确是用委托来声明的, 那么请问为什么不能直接用委托来代替事件?
知道 的朋友请告诉我一下,最好例出不能用委托代替事件的场 合,谢谢 ! 展开
知道 的朋友请告诉我一下,最好例出不能用委托代替事件的场 合,谢谢 ! 展开
6个回答
展开全部
事件是类在发生其被关注的事情时用来提供通知的一种方式。
使用事件,对象A可以将关于事件或已发生变化的信息通知其他对象B。
引发事件的对象称为事件发送方源。
捕获事件并对其作出响应的对象叫做事件接收方。
在事件通信中,发送方不知道哪个对象或方法将接收【处理】它引发的事件。故需要在发送方和接收方之间存在一个媒介【或类似 指针的机制】。.NET Framework 定义了一个特殊的类型 (Delegate),该类型提供函数指针的功能。
事件使用委托来为触发时将调用的方法提供类型安全的封装。
这段话是我珍藏的,比较抽象。
为什么不能直接用委托代替事件?我个人觉得,在事件通讯这个模式下,这是规定好的:事件+=委托(方法)。如果按您的想法,直接委托+方法,那么接收方如何知道你到底干了什么事情,是双击了button,还是单击了一下窗体,又或者干了其他事情。首先没有方法知道,那么接收方调用哪个委托(方法)呢?
您好好看看刚开始的那段话,应该会有很大帮助。
使用事件,对象A可以将关于事件或已发生变化的信息通知其他对象B。
引发事件的对象称为事件发送方源。
捕获事件并对其作出响应的对象叫做事件接收方。
在事件通信中,发送方不知道哪个对象或方法将接收【处理】它引发的事件。故需要在发送方和接收方之间存在一个媒介【或类似 指针的机制】。.NET Framework 定义了一个特殊的类型 (Delegate),该类型提供函数指针的功能。
事件使用委托来为触发时将调用的方法提供类型安全的封装。
这段话是我珍藏的,比较抽象。
为什么不能直接用委托代替事件?我个人觉得,在事件通讯这个模式下,这是规定好的:事件+=委托(方法)。如果按您的想法,直接委托+方法,那么接收方如何知道你到底干了什么事情,是双击了button,还是单击了一下窗体,又或者干了其他事情。首先没有方法知道,那么接收方调用哪个委托(方法)呢?
您好好看看刚开始的那段话,应该会有很大帮助。
展开全部
委托是事件的基础,事件在一个方法内部,委托在外部定义,在内部运用,所以说,委托是事件的基础。一个委托可以定义多个事件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-09-12
展开全部
事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托.
通俗的讲,委托你可以在客户代码中直接调用委托来激发委托指向的函数,而事件不可以,事件的触发只能由服务代码自己触发
也就是说在你的代码里委托你不但可以安排谁是它的调用函数,还可以直接调用它,而事件不能直接调用,只能通过某些操作触发
你可以理解事件就是一个或多个委托,此话应该有误的吧,事件可以有多个事件处理函数,委托同样也可以是个多播委托
通俗的讲,委托你可以在客户代码中直接调用委托来激发委托指向的函数,而事件不可以,事件的触发只能由服务代码自己触发
也就是说在你的代码里委托你不但可以安排谁是它的调用函数,还可以直接调用它,而事件不能直接调用,只能通过某些操作触发
你可以理解事件就是一个或多个委托,此话应该有误的吧,事件可以有多个事件处理函数,委托同样也可以是个多播委托
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
事件就是一种特殊的委托。委托是一种安全的类似与函数指针,但是她比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。事件是一种消息机制,它是一种委托,委托不带方法体。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最 简单的解释就是:事件是由系统来给你管理什么时候要执行某个函数。而委托是由人来操作什么时候执行某个函数的。一个是自动的,一个是人为的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以在代码中直接调用委托来激发委托指向的函数,而事件不可以,事件的触发只能由服务代码自己触发.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询