A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 赵威 于 2013-4-25 16:47 编辑

回头看了看委托和事件的区别,感觉做了几个题之后,用事件实现的,用委托都能做,二者的区别在哪啊?既然可以用委托去模拟事件,那要事件到底有什么用处?
求高手帮忙解答

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

倒序浏览
委托可以用=对委托字段赋值,如果声明一个public的委托字段,在外部可以对其修改,这是我们不愿意看到的

事件可以说是封装好的委托字段,外部只能通过+=和-=来注册注销,

可以尝试定义一个private委托字段,然后对外开放它的Add和Remove方法,到了这里差不多就明白事件和委托的区别了

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
正如你看到的,委托和事件的定义只差一个关键字:event,这是C#语言的语法规则,我们知道就行了,但不得不说只是知道语法规则还是不行的,这里我不会多说,只解释一点:事件是你的系统事先定义好的(注意是事件,而不是委托),当你点击按钮时,就会执行事件处理程序。但假如系统事先定义好的是委托,那么当你点击按钮时,这个方法就不会执行。当你在写一个控制台程序时事件和委托的差别是表现不出来的,只有写winform等程序时才可以表现出来
回复 使用道具 举报
其实就是保护性质的,和属性差不多 public int Age{set;get;}

事件就是一个公有的委托,而且只允许 +=和 -=
public event EventHandler hander;
就可以和限制属性的 set{} get{}那样,自己添加add{} remove{}的处理过程啦~~

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
委托其实是最事件加以的限制,事件就是一个私有委托和两个方法ADD和Remove,比方说声明一个委托,可以到处使用,而声明一个事件只能在该类中使用,这是委托和事件的主要区别,其实二者是一回事,只是事件是对委托加以限制了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马