当我们使用回调时,我们将一个函数作为参数传递给另一个函数,然后在需要的时候让另一个函数调用该函数。这样,我们可以将代码的执行顺序控制交给其他函数,并在合适的时候调用回调函数。
举个例子来解释一下:
假设你正在写一个音乐播放器的应用程序,当用户点击播放按钮时,你希望在歌曲播放完毕后执行一些特定的操作。 使用回调函数,你可以将这些特定的操作以回调函数的形式传递给播放音乐的函数。在音乐播放完毕的时候,播放函数会调用你传递的回调函数。
代码示例:
using System;
class MusicPlayer
{
public void Play(string song, Action<string> callback)
{
Console.WriteLine("正在播放歌曲:" + song);
// 模拟歌曲播放完毕
System.Threading.Thread.Sleep(3000);
// 调用回调函数
callback(song);
}
}
class Program
{
static void Main(string[] args)
{
MusicPlayer player = new MusicPlayer();
// 定义回调函数
Action<string> callback = (song) =>
{
Console.WriteLine("歌曲播放完毕:" + song);
// 在歌曲播放完毕后执行其他操作
// ...
};
// 播放音乐并传入回调函数
player.Play("青花瓷", callback);
Console.WriteLine("程序结束");
Console.ReadLine();
}
}
在上面的示例中,我们创建了一个名为`MusicPlayer`的类,其中有一个`Play`方法用于播放音乐。这个方法接受两个参数:要播放的歌曲名称和回调函数。
在`Main`方法中,我们定义了回调函数,并将其传递给`Play`方法。在音乐播放完毕后,播放函数会自动调用回调函数。
你可以将回调函数视为一个可选项,它允许你在主函数的控制流程之外执行特定的操作,从而提供了更大的灵活性。