C#回调函数的简单讲解与应用例子
这篇文章的目的就是讲清楚C#回调函数是什么,以及什么时候使用
using System;
namespace CallBackTest
{
class Program //用户层,执行输入等操作
{
static void Main(string[] args)
{
CalculateClass cc = new CalculateClass();
FunctionClass fc = new FunctionClass();
int result1 = cc.PrintAndCalculate(2, 3, fc.GetSum);
Console.WriteLine("调用了开发人员的加法函数,处理后返回结果:" + result1);
int result2 = cc.PrintAndCalculate(2, 3, fc.GetMulti);
Console.WriteLine("调用了开发人员的乘法函数,处理后返回结果:" + result2);
Console.ReadKey();
}
}
class FunctionClass //开发层处理,开发人员编写具体的计算方法
{
public int GetSum(int a, int b)
{
return (a + b);
}
public int GetMulti(int a, int b)
{
return (a * b);
}
}
#region 实际开发中,下面这个类会封装起来,只提供函数接口。相当于系统底层
class CalculateClass
{
public delegate int SomeCalculateWay(int num1, int num2);
//将传入参数在系统底层进行某种处理,具体计算方法由开发者开发,函数仅提供执行计算方法后的返回值
public int PrintAndCalculate(int num1 , int num2 , SomeCalculateWay cal)
{
Console.WriteLine("系统底层处理:" + num1);
Console.WriteLine("系统底层处理:" + num2);
return cal(num1, num2);//调用传入函数的一个引用
}
//可以封装更多的业务逻辑方法
}
#endregion
}
下面详细解释一下(包含一些关于封装的意义):
1、中间的FunctionClass中的GetSum()和GetMulti()两个函数称为回调函数。可以看到整个程序中并没有哪个地方通过类似GetSum(1,2)这种形式调用了该函数,只有将其当作另一个函数的参数来进行调用。如
cc.PrintAndCalculate(2, 3, fc.GetSum)
下面是百度百科的定义:
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
简单来说,就是 public delegate int SomeCalculateWay(int num1, int num2) 这行代码,把 SomeCalculateWay 这几个字符定义成一种类型,什么类型呢?-> 带了两个int参数的函数类型。而PrintAndCalculate()函数的第三个参数是这种类型,GetSum(int,int)也是这种类型,所以GetSum这个函数可以被当做参数传入,并且在打印完两个数字后执行,被称为回调函数。
转载自:https://blog.csdn.net/sajiazaici/article/details/78702144
版权声明:
作者:亦灵一梦
链接:https://blog.haokaikai.cn/2020/program/aspnet/991.html
来源:开心博客
文章版权归作者所有,未经允许请勿转载。
THE END
1
二维码
海报
C#回调函数的简单讲解与应用例子
这篇文章的目的就是讲清楚C#回调函数是什么,以及什么时候使用
using System;
namespace CallBackTest
{
class Program //用户层,执行输入等操作
{
……