在平时的C++编程里,使用函数回调最常用的方式是使用函数指针,比如:void (*funProc)(void);将funProc指向一个类型相同的函数名就可以实现函数回调。我经常在AVR编程里使用它,因为使用回调可以让系统框架很容易的实现特定的功能而无需使用太多的switch;但在C#里,它有更严格的要求,而且它不再是简简单单的指针,而是一个类(委托)。使用delegate修饰符声明一个委托。
例如:
delegate bool Compare(object x, object y); 声明了一个Compare类型,返回类型为bool的委托,并且带有两个参数。
和C++一样,如果委托只是单单的调用某个程序,意义就不是很大,但是如果有一个实例数组,数组里的每个成员都指向一个函数,这个时候使用委托去访问数组里指向的函数将发挥它强大的功能。例如我们可以在一个数组里安排一些在某个时刻需要调用的函数组,使用forech让委托走遍里面要走的程序,在需要的时候还可以动态的修改这个数组来完成所需的功能。
|