当可以进行常规函数调用时,回调函数有什么可取之处?

本文关键字:什么 函数 回调 常规 函数调用 | 更新日期: 2023-09-27 18:11:44

我是编程新手,我注意到回调函数作为参数传递给其他函数

Otherfunction(argument,callbackfunction(code...code))

这看起来很麻烦,不是吗?为什么不这样做呢

Otherfunction(argument)
{
    callbackfunction();
}
Callbackfunction()
{
    //callback function is defined here.
}

为什么要用回调淹没函数的参数列表?

当可以进行常规函数调用时,回调函数有什么可取之处?

如果不传递回调函数,那么被调用的函数需要知道调用哪个函数。这严重限制了它的重用。传入回调函数也允许你修改它的行为。

考虑以下内容:

void DoSomethingAndNotify(Action<string> notifyCallback)
{
    // Do something
    ...
    string result = "something was done";
    notifyCallback(result);
}
void EmailNotifier(string message)
{
    // Send message via email
}
void ConsoleNotifier(string message)
{
    Console.WriteLine(message);
}

然后你可以对不同类型的通知"做点什么",你可以添加新的通知类型,而不必改变DoSomethingAndNotify()