什么是事件和委托?

如题。... 如题。 展开
 我来答
鼁蟆
高粉答主

推荐于2018-03-03 · 说的都是干货,快来关注
知道顶级答主
回答量:5.8万
采纳率:96%
帮助的人:1亿
展开全部
委托和事件在.NET Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。

事件就是一个特殊的委托,委托和事件就类似于字段和属性的关系,事件是对委托做了一个封装。
参考:http://baike.baidu.com/view/1935199.htm
手机用户14212
2014-04-28 · 超过68用户采纳过TA的回答
知道答主
回答量:207
采纳率:0%
帮助的人:158万
展开全部
委托实质上是一个类,是对方法的封装,委托内部有三个重要成员:目标,方法,前一个委托。普通代码里这样调用方法: aBird.Fly(); 封装到委托里,aBird 就是目标,Fly 就是方法。委托可以组成链,“前一个委托”用于支持这种链式结构。 MethodInvoker mi = new MethodInvoker(aBird.Fly); mi(); 这段和上面的 aBird.Fly 是一个效果,但不是直接调用。可以将 mi 传递到其他地方,再进行调用。委托在方法和调用方之间建立了间接性。 事件是基于委托的通信机制。如果一个对象的状态改变了,我们可能希望将这种改变通知给外界。从实现角度看,“通知”其实就是调用接收方的方法。困境在于,我们不知道谁对这些改变有兴趣,有多少人对这些改变有兴趣,所以,我们无法直接调用方法。.net中有两个办法解决这个问题,接口和委托。这两个的含义都是“约定”,目的则是“分离”,换句话说,就是:商量好了,分头行动。接口是对类成员的约定,委托是对参数和返回值的约定。对于简单的通知,接口有些麻烦,委托更好一些,所以,我们将一个委托加到类中,让它保存应该调用的方法。但光秃秃的一个字段有点难看,好像没穿衣服一样。为了让代码更好看,.net 引入了事件的概念。事件本质上是一个方法,事件提供 add, remove,将方法挂到这个委托中,或从此委托中移除。像这样: button1.Click += new EventHandler(button1_Click), 订阅事件, button1.Click -= new EventHandler(button1_Click), 退阅事件, 如果A订阅了B的事件,那么它们之间的引用关系是这样:B引用委托,委托引用A。这就是说,在退阅事件之前,A不会被当作垃圾回收,因为B包含对它的引用。 因此,委托和事件的区别是:委托与类,结构,接口,枚举是一类,而事件属类成员,和属性,方法,字段是一类。不过这种区分意义不大,应付考官而已。写代码的时候,谁会想这么多。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
环球网校
2019-04-26 · 移动学习,职达未来!
环球网校
环球网校成立于2003年,十多年来坚持“以学员为中心、以质量为本、以创新驱动”的经营理念,现已发展成为集考试研究、网络课程、直播课堂、题库、答疑、模考、图书、学员社区等为一体的规模化学习平台
向TA提问
展开全部
  • 在线客服
  • 官方服务
    • 官方网站
    • 精华资料
    • 免费直播课
    • 免费领课
    • 领优惠券
    • 考试日历
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
撒旦127
2014-04-28 · 超过64用户采纳过TA的回答
知道答主
回答量:181
采纳率:50%
帮助的人:65万
展开全部
你的问题有些模糊啊,我不知道是问事件还是问委托?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
您可能需要的服务
百度律临官方认证律师咨询
平均3分钟响应 | 问题解决率99% | 24小时在线
立即免费咨询律师
13358人正在获得一对一解答
南昌湖上倒影2分钟前提交了问题
沈阳星空之梦5分钟前提交了问题
石家庄麦田守望1分钟前提交了问题
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

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

说明

0/200

提交
取消
还有疑问? 马上咨询33125位在线律师,3分钟快速解答
立即免费咨询律师

辅 助

模 式