委托允许用户将自己的方法与委托实例关联起来,从而在委托被调用时执行自己的方法。常被用来作为回调函数、固定逻辑中的可变处理过程方法。
  1. 委托实现回调函数举例
//define callback delegate
public delegate void CallBack(string result);
//process method
public void Processer(string args, CallBack resultHandle)
{
//get result...
string result = "args is" + args;
//handle the result
resultHandle(result);
}
//handel the result
public void DisplayResult(string result)
{
Console.WriteLine(result);
}
//callback delegate example
public void Main()
{
Processer("待处理数据", new CallBack(DisplayResult));
}
  本例中包含四个简单的步骤:
  1. 定义了委托CallBack,用于包装一个方法作为回调函数。
  2. 定义了一个处理方法Processer,代表一个处理过程。该处理过程第一个参数是要处理的数据,第二个参数是用于接收处理结果的回调函数。
  3. 定义回调的具体方法DisplayResult,该方法参数和返回值要与委托CallBack保持一致。
  4. 定义具体的应用代码Main,该方法调用处理过程Processer,让其处理“待处理数据”,并将处理结果交给委托对象 new CallBack(DisplayResult),这样DisplayResult包装在委托对象中,传递给了Processer的回调参数resultHandle。在Precesser处理完成之后,调用resultHandle(result);此时委托对象委托DisplayResult方法来完成结果的显示工作。
  当然,如果将委托中包装的方法换成一个新方法PrintResult,也可以实现将处理结果通过打印机打印出来。这是一个委托做回调的简单应用。确实很有魅力