委托:
- 从数据结构来讲 委托是和类一样是一种用户自定义类型
- 从设计模式来讲,委托(类)提供了方法(对象)的抽象
- 也可以说是为指向一个函数的指针
- 委托可以把一个方法作为参数代入另一个方法
如何使用委托:
- 定义一个委托 (关键字delegate)
- 实例化委托
- 调用委托
调用委托:
委托调用跟方法调用类似,委托调用后,调用列表的每个方法将会被执行,在调用委托前,应判断委托是否为空。
If(null!=del)
{
Del();//委托调用
}
优点:
- 委托类似于c++函数指针,但他们的类型是安全的
- 委托允许将方法作为参数进行传递
- 委托可用于定义回调方法
- 委托可以链接在一起;例如,可以对一个事件调用多个方法
- 方法名不必与委托名完全匹配
什么情况使用委托:
当程序处理大批量数据时,需要在程序界面显示进度条进行友好提示,这时通过委托来实现非常方便
事件:
我们可以把事件编程简单的分成两个部分:事件发生的类和事件接收处理的类,事件发生的类就是说在这个类中触发了一个事件,但这个类并不知道哪个对象或者方法将会接收到并处理他触发的事件,所需要的是在发送方和接收方之间存在一个媒介
为什么要使用事件:
1,在以往程序员编写这类程序中,往往采用等待机制,为了等待某件事情的发生,需要不断地检测某些判断变量,而引入事件编程后,大大简化了这种过程:
2,使用事件,可以很方便地确定程序执行顺序。
3,当事件驱动程序等待事件时,它不占用很多资源。事件驱动程序与过程式程序最大的不同就在于,程序不再不停地检查输入设备,而是呆着不动,等待消息的到来,每个输入的消息会被排进队列,等待程序处理它。如果没有消息在等待,则程序会把控制交回给操作系统,以运行其他程序。
- 事件简化了编程。操作系统只是简单地将消息传送给对象,由对象的事件驱动程序确定事件的处理方法。操作系统不必知道程序的内部工作机制,只是需要知道如何与对象进行对话,也就是如何传递消息。
事件是不是一种委托:委托和事件没有可比性,事件是对象,事件的内部是用委托实现的。
事件和委托的关系: 要讲事件,必然要讲到委托(delegate)。它们之间的关系可以通过一个浅显的比方来说明,这个比方可能不是十分恰当。比如你要租一个房屋,这是一个事件,那么委托就是房屋租赁中介,当你把租房子的消息告知中介后,中介就会产生出一套符合你要求的房屋租赁方案来。再由中介执行这套方案,你便租得了这个房屋,即事件被处理了。当然你也可以不通过中介,直接找房东,但如果没有互联网等工具,你如何得到谁出租房屋的信息?