在平時的C++編程里,使用函數回調最常用的方式是使用函數指針,比如:void (*funProc)(void);將funProc指向一個類型相同的函數名就可以實現函數回調。我經常在AVR編程里使用它,因為使用回調可以讓系統框架很容易的實現特定的功能而無需使用太多的switch;但在C#里,它有更嚴格的要求,而且它不再是簡簡單單的指針,而是一個類(委托)。使用delegate修飾符聲明一個委托。
例如:
delegate bool Compare(object x, object y); 聲明了一個Compare類型,返回類型為bool的委托,并且帶有兩個參數。
和C++一樣,如果委托只是單單的調用某個程序,意義就不是很大,但是如果有一個實例數組,數組里的每個成員都指向一個函數,這個時候使用委托去訪問數組里指向的函數將發揮它強大的功能。例如我們可以在一個數組里安排一些在某個時刻需要調用的函數組,使用forech讓委托走遍里面要走的程序,在需要的時候還可以動態的修改這個數組來完成所需的功能。
|