我知道回调是它自己的方法,并作为参数传递给另一个方法。
但是为什么我们需要将方法作为参数传递,而我们可以通过调用方法直接执行该操作。
例如:
private static void TakeAction(Action<String> action)
{
}
TakeAction((s) => { Console.WriteLine(s); });
只需这样做即可:
private static void TakeAction()
{
Fo1();
}
private static void Fo1(string s)
{
Console.WriteLine(s);
}
那么为什么要回拨?它解决了哪些具体问题?
答案 0 :(得分:1)
您有Fo1
方法的编译时引用,因此您只需调用它即可。如果您在编译时不知道该方法怎么办?你怎么称呼它?这就是代表们有用的原因。
你能想象没有代表的“Linq”(或你所说的回调)。没有代表,linq什么都不是。 .Net框架如何调用您的方法(在您自己的程序集中定义)。?
嗯,有办法。我们可以使用接口,但这与java的做法没有什么不同。这是c#的方式。
答案 1 :(得分:0)
通过定义委托,您要对您的班级用户说 “请随意在这里放置任何符合此签名的方法 每当我的代表被称为“
时,它就会被调用
我认为这足以让你知道Why to use call backs when same thing can be done just by calling the method
答案 2 :(得分:0)
代理(您称之为回调)是类型,它描述了它们可以存储在变量中的方法类型。这使您可以选择动态选择哪个方法程序使用而无需使用整个命令模式(您必须定义一个实现具有您选择的方法的接口的类)。