当可以进行常规函数调用时,回调函数有什么可取之处?
本文关键字:什么 函数 回调 常规 函数调用 | 更新日期: 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()
。