学习C#不久,以前一直学VC的,可以说是为了找工作时多点筹码而学的,有些功利性,不过喜欢追根问底.问个关于事件的问题基本语言要素我了解,只是觉得有些疑惑.希望各位达人帮忙提示下委托对象定义了一个回调函数的形式,而事件又是依据一个委托创建的,那么"事件"存在的意义是什么?一种委托对象只能对应一种形式的函数,一种事件对象只能对应一种形式的委托,那么直接把事件与函数关联起来不好么?为什么需要在中间加上一层?以Windows应用程序为例,众所周知,Windows底层是基于消息驱动的,当处理消息时,省去事件一层,直接调用委托中的函数列表不是更直接?省去委托一层也是一样.那么,是不是事件还有些别的什么我目前还不知道的特性?Event和delegate对象全都实现了多点回调,实现了+=和-=操作符,事件对象也可以像多点委托时关联多个函数那样关联到多个委托,那么去掉它们中的任意一层不是更好?多了一个层次并没有增加可扩展性和可读性,那么这样做的意义何在?如果事件对象可以关联到多个不同类型的委托,那就容易理解了,可是事实上事件只能依据一个已有委托来创建,而添加委托时又必须符合创建事件时的委托形式,那么,事件到底有什么特别的作用呢?期待一直在做C#的兄弟们帮忙解释下,谢谢了先!
解决方案 »
- 请问为什么DevExpress gridView 设置了AllowCellMerge EvenRow 就不起作用了。
- 查文件夹a下的所有.csv文件(只有.csv文件,无子文件夹),看这些.csv文件里有没有abc这个内容,有就返回true,没就flase
- c#连接数据库的问题
- 这个c++的嵌套结构体,怎么翻译成c#的?
- 窗体需要点击两次才能退出
- 用C#开发局域网查看工具
- 程序怎样会在用户按Ctrl+Enter这两个按键后,能触发butn类控件单击事件
- ····· comboBox 相关,我想让 comboBox 只能用来选择,不能用来输入,该如何办?
- 类实例化问题探讨?
- Treeview
- 如何移动DataGridView的游标?
- 上传图片问题:我的页面套用的主模板,想实现FileUpload1浏览图片后在Image1中显示?
一个关键字一个标准一个被识别的标准
注意within
委托和事件特点如下:
委托具有以下特点:
委托类似于 C++ 函数指针,但它是类型安全的。
委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起。
方法不需要与委托签名精确匹配。事件具有以下特点:
事件是类用来通知对象需要执行某种操作的方式。
尽管事件在其他时候(如信号状态更改)也很有用,事件通常还是用在图形用户界面中。
事件通常使用委托事件处理程序进行声明。
事件可以调用匿名方法来替代委托。其实,你可以在msdn中找到答案,微软已经给予了深刻的解释
delegate象一个类,而且是可以提供回调功能的类
event则是对delegate的扩充,最起码delegate不支持多播,或者得手工去写,而event自动在delegate的基础上添加了多播的能力。