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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 吃肉的小浣熊 于 2013-5-19 13:47 编辑

C#中用委托有什么好处?事件是不是一种委托?

评分

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

查看全部评分

7 个回复

正序浏览
王朋 中级黑马 2013-5-19 12:23:07
8#
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的指针。
委托和事件没有可比性,因为委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准的event方式实现)事件的区别。事件的内部是用委托实现的。因为对于事件来讲,外部只能“注册自己+=、注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种语法。事件是用来阉割委托实例的,类比用一个自定义类阉割List。事件只能add、remove自己,不能赋值。事件只能+=、-=,不能= 。加分的补充回答:事件内部就是一个private的委托和add、remove两个方法
回复 使用道具 举报
周琪 中级黑马 2013-5-18 12:45:00
7#
委托和事件就是来存方法的。事件是一种委托。
《不同点:1但事件只能在声明它的那个类或结构中被调用《不能在其他类中被调用》,而委托到处可以用。
2委托时类型,事件是成员。
3委托是由remove,add和一个私有委托组成的。所以你在用的时候委托只有两种用法:-=和+=。你可以拿反编译工具看下。


事件的声明必须要你声明一个委托或使用系统自定义的EventHandler.
  <事件的参数必须和与它相关联的那个委托的的参数,返回值一致,系统>

委托的声明方式是:  访问修饰符  delegate  返回值 委托名(参数1,参数2。。)  如:public delegate void MyDel(string s);
事件的声明方式是:访问修饰符 Event 委托名 事件名;                                   如:public Event Mydel MyEvent;
回复 使用道具 举报
委托和事件就是来存方法的。事件是一种委托。
《不同点:1但事件只能在声明它的那个类或结构中被调用《不能在其他类中被调用》,而委托到处可以用。
2委托时类型,事件是成员。
3委托是由remove,add和一个私有委托组成的。所以你在用的时候委托只有两种用法:-=和+=。你可以拿反编译工具看下。


事件的声明必须要你声明一个委托或使用系统自定义的EventHandler.
  <事件的参数必须和与它相关联的那个委托的的参数,返回值一致,系统>

委托的声明方式是:  访问修饰符  delegate  返回值 委托名(参数1,参数2。。)  如:public delegate void MyDel(string s);
事件的声明方式是:访问修饰符 Event 委托名 事件名;                                   如:public Event Mydel MyEvent;
回复 使用道具 举报
委托我目前的理解在方法中传入一个方法,尤其是窗体之间传值的用到会比较多,事件也是一种委托,尤其是在多播委托的时候后面的委托事件会覆盖前面的事件,目前理解是这样的,希望对你有帮助。
回复 使用道具 举报
委托就是将方法作为一个参数带入别一个方法 就叫委托,
事件是一种委托
回复 使用道具 举报
期待。。。。。。。。。。。
回复 使用道具 举报
使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。委托是面向对象,而且是类型安全的
事件就是一个狭义的委托,可以理解事件就是一个或多个委托,此话应该有误的吧,事件可以有多个事件处理函数,委托同样也可以是个多播委托
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马