回调函数的意义在于把要处理的程序逻辑交给调用者,被调用者只需要提供对外的接口即可.
Program.cs
代码
using System;
namespace CallBackDemo
{
class Program
{
static void Main(string[] args)
{
Program prog = new Program();
SumClass sc = new SumClass();
sc.StartWork(3, 5); //提供参数。
sc.DoWork(prog.MySum); //执行这里提供的对应该公开委托签名的方法。
sc.ShowResult(); //显示处理结果。
Console.ReadKey();
}
//这里的处理逻辑完全由调用者自己决定,只需要匹配对应的公开委托的签名。
public int MySum(int x, int y)
{
return x + y;
}
}
//为了简化数据处理的部分,这里只使用一个加法运算,突出程序的流程和回调的意义。
public class SumClass
{
//通过对外访问接口传入的参数。
private int x;
private int y;
//执行处理后反馈的结果,如果委托的返回类型是void,这里可以省略。
private int ret;
//提供对外的访问接口,这里就是一个委托。
public delegate int Sum(int x, int y);
//如果被调用的函数没有参数,这里也可以省略。
public void StartWork(int x, int y)
{
this.x = x;
this.y = y;
}
//程序处理部分。
public void DoWork(Sum sum)
{
ret = sum(x, y);//处理逻辑交给调用者,这里只负责获取结果。
}
//执行后反馈结果,其实这里也可以和程序处理部分合二为一,这里旨在演示回调可以存在诸多处理步骤中的某一步或者某几步。
public void ShowResult()
{
Console.WriteLine("最后的结果是:" + ret);
}
}
}