前言
我最近在查C#的回调函数怎么弄,结果折腾了半天还是没解决。我看网上写的都贼复杂。但是大家知道C#其实是Java和JS的混合体。他继承了他们中的优点,拥有极强的语法糖。这里我还是自己折腾出回调函数是如何模仿JS写的。
简单的异步函数
定义
我这里定义回调函数。回调函数我就是拿来回调的,我不是拿来入参的。回调函数最大的特点就是异步性。就是我和你约定好你给我传回来的是什么值,我把怎么解决的方法设置好。之后等你返回就行了。
回调函数如下(我个人定义)
public void Function(Action<回调参数> callback)
{
...其他步骤
callback(参数);
}
代码
internal class Program
{
private static Person person;
static void Main(string[] args)
{
person = new Person()
{
Name = "小明",
Age = 15
};
person.GetInfo((a,b) =>
{
Console.WriteLine("我是回调函数");
Console.WriteLine($"姓名:{a},年龄{b}");
});
person.GetInfoDelay((a, b) =>
{
Console.WriteLine("我等线程跑完");
Console.WriteLine($"姓名:{a},年龄{b}");
});
Console.ReadLine();
}
}
public class Person{
public string Name {
get; set; }
public int Age {
get; set; }
/// <summary>
/// 回调函数
/// </summary>
/// <param name="callback"></param>
public void GetInfo(Action<string, int> callback)
{
callback(Name, Age);
}
public void GetInfoDelay(Action<string, int> callback)
{
for(var i = 0; i < 10; i++)
{
Console.WriteLine(i);
Thread.Sleep(1000);
}
callback(Name, Age);
}
}