回调

实际开发中,下面这个类会封装起来,只提供函数接口。相当于系统底层

class CalculateClass
{
    public delegate int SomeCalculateWay(int num1, int num2);
    //将传入参数在系统底层进行某种处理,具体计算方法由开发者开发,函数仅提供执行计算方法后的返回值
    //下面的代码中相当于调用了一个回调函数
    public int Calculate(int num1, int num2, SomeCalculateWay call)
    {
        return call(num1, num2);
    }
}

 开发层处理,开发人员编写具体的计算方法

class FunctionClass
{
    public int GetSum(int a, int b)
    {
        return a + b;
    }

    public int GetMulti(int a, int b)
    {
        return a * b;
    }
}

用户层,执行输入等操作

private void button4_Click(object sender, EventArgs e)
{
    CalculateClass cc = new CalculateClass();
    FunctionClass fc = new FunctionClass();

    int result1 = cc.Calculate(2, 3, fc.GetSum);
    int result2 = cc.Calculate(2, 3, fc.GetMulti);

    richTextBox1.AppendText(result1 + "\r");
    richTextBox1.AppendText(result2 + "\r");
}

上述代码中的FunctionClass中的GetSum()和GetMulti()两个函数称为回调函数。可以看到整个程序中并没有哪个地方通过类似GetSum(1,2)这种形式调用了该函数,只有将其当作另一个函数的参数来进行调用。

posted @ 2022-08-29 20:00  celestially98  阅读(135)  评论(0)    收藏  举报