委托允许用户将自己的方法与委托实例关联起来,从而在委托被调用时执行自己的方法。常被用来作为回调函数、固定逻辑中的可变处理过程方法。
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,也可以实现将处理结果通过打印机打印出来。这就是一个委托做回调的简单应用。确实很有魅力