本篇主要學習了C#回調函數的定義使用。歡迎各位大牛的指導。函數
回調函數就是一個經過函數指針調用的函數。若是你把函數的指針(地址)做爲參數傳遞給另外一個函數,當這個指針被用來調用其所指向的函數時,咱們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。通俗點講就是講某個實現函數做爲參數傳入另外一個函數中去,固然咱們能夠經過委託接口等其餘一些手段實現這種方式。學習
這還要說,固然確定會完成某項功能了啊。(汗)spa
上文也提到了,被回調的函數實際上是做爲參數傳遞給要執行的函數的。那如何才能將函數做爲參數呢?固然是使用委託了,委託的知識這裏就不講解了。指針
這樣的話咱們就很好理解了,那咱們就開始實現起來。首先定義一個委託:code
delegate void DelegateDone(); //定義一個無返回值的委託
再定義一個實現函數,將委託做爲參數傳遞進來:blog
void DoWork(DelegateDone callBack){ callBack(); }
看看是否是就實現了一個簡單的回調函數了啊。接口
如今咱們再回頭來看看,是否是必須在函數入參的時候傳遞進去呢?那固然不是,那上面只是爲了便於咱們理解回調函數的實現。下面我就我工做中遇到的回調函數使用給你們作一個參考:事件
public delegate void GetHeartDataDelegate(HeartModel model); //定義一個委託 public GetHeartDataDelegate GetHeartHandler; //MQTT接收數據處理 void MQTTReceiver(object sender, MqttMsgPublishEventArgs e) { string receiveData = Encoding.Default.GetString(e.Message); if(null != GetHeartHandler) { //省略轉換 GetHeartHandler(receiverData); //調用委託函數 } } //外部調用 void GetHeartDataCallback(HeartModel model) { //省略實現代碼 } void Main() {
GetHeartHandler=new GetHeartDataDelegate (GetHeartDataCallback); //綁定須要回調的函數
}
看代碼其實很簡單,就是在底層咱們檢測到了數據的傳入,回調給上層具體的函數實現。get
回調函數其實就是把某個方法當作參數傳遞給另一個方法。在實際工做中,底層數據接收的回調,訂單支付的回調等等都是基於這個思想實現的。回調函數