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