📅  最后修改于: 2023-12-03 15:29:47.053000             🧑  作者: Mango
在 C# 中,回调是一种程序设计方式,它允许我们在某个程序执行一个特定操作的同时,回调另一个程序以 执行另一项操作。
回调函数是 C# 中最常用的回调形式之一,它是指一个被传递给另一个函数的函数。这个函数在另一个函数执行完毕后被调用。
// 回调函数示例
delegate void MyDelegate(string value); // 声明委托类型
static void MyFunc(string value, MyDelegate callback) // 接收回调函数作为参数
{
// 执行一些操作
callback(value); // 调用回调函数
}
static void MyCallback(string value) // 回调函数
{
Console.WriteLine("Callback value: " + value);
}
static void Main()
{
// 调用 MyFunc,并把 MyCallback 函数作为回调函数传递进去
MyFunc("hello world", MyCallback);
}
在上面的示例中,MyFunc
函数接收两个参数,一个是 value
,一个是 callback
,callback
参数是一个委托类型,它用于接收回调函数作为参数。函数执行过程中,回调函数 MyCallback
被调用,输出 Callback value: hello world
。
在 C# 中,Action
委托是一种不接收输入参数的委托类型,用于表示一个无返回值的方法。Func
委托是一种接收一个或多个输入参数的委托类型,用于表示一个有返回值的方法。
// Action 和 Func 示例
static void MyFunc(Action<string> callback)
{
// 执行一些操作
callback("hello world");
}
static void MyCallback(string value)
{
Console.WriteLine("Callback value: " + value);
}
static void Main()
{
MyFunc(MyCallback); // MyCallback 是一个 Action 类型委托函数
Func<int, int> square = x => x * x; // square 是一个 Func 委托类型
int result = square(5); // 调用委托函数,返回 25
}
在上面的示例中,MyFunc
函数接收一个 callback
参数,它是一个 Action<string>
委托类型,表示一个不接收任何参数的方法。回调函数 MyCallback
被传递给 callback
,输出 Callback value: hello world
。
Func<int, int>
委托类型表示一个接收一个整型参数并返回一个整型结果的方法。在示例中,我们使用 lambda
表达式来定义一个返回参数平方值的函数 square
,然后调用该函数,返回 25
。
Lambda 表达式是 C# 3.0 中引入的一种表达式形式。它允许我们在不定义具体函数的情况下,直接将函数体作为参数传递给其他函数。
Lambda 表达式以 =>
符号分隔参数和表达式,参数和表达式之间用一个箭头符号来连接,示例如下:
// Lambda 表达式示例
Func<int, int> square = x => x * x;
在上面的示例中,x => x * x
是一个匿名函数,表示一个以 x
为参数,并返回 x * x
的表达式。将该匿名函数赋值给 square
委托,使 square
委托指向该函数。
C# 回调参数是实现程序中各个部分之间互相协作的一种方式。通过回调函数,我们可以在一个程序执行完特定操作时,向另一个程序发出信号,通知其执行相应的动作。在 C# 中,我们可以使用委托、Action、Func、Lambda 等各种方法来实现回调功能。熟练掌握 C# 回调参数的使用方法,能够使程序更加灵活和高效。