理解C#回调函数

序言

  本篇主要学习了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

总结

  回调函数其实就是把某个方法当作参数传递给另一个方法。在实际工做中,底层数据接收的回调,订单支付的回调等等都是基于这个思想实现的。回调函数

相关文章
相关标签/搜索