C# 当同样的事情可以通过调用方法来完成时,为什么要使用回调呢
我知道回调本身就是方法,并且作为参数传递给另一个方法 但为什么我们需要将方法作为参数传递,而我们只需调用该方法就可以直接传递呢 例如:C# 当同样的事情可以通过调用方法来完成时,为什么要使用回调呢,c#,.net,callback,C#,.net,Callback,我知道回调本身就是方法,并且作为参数传递给另一个方法 但为什么我们需要将方法作为参数传递,而我们只需调用该方法就可以直接传递呢 例如: private static void TakeAction(Action<String> action) { } TakeAction((s) => { Console.WriteLine(s); }); 那为什么要回电话呢?它解决了什么具体问题?您有一个对Fo1方法的编译时引用,所以只需调用它。如果在编译时不知道该方法怎么办?你怎么称
private static void TakeAction(Action<String> action)
{
}
TakeAction((s) => { Console.WriteLine(s); });
那为什么要回电话呢?它解决了什么具体问题?您有一个对
Fo1
方法的编译时引用,所以只需调用它。如果在编译时不知道该方法怎么办?你怎么称呼它?这就是为什么代表很有用
你能想象没有委托(或者你说的回调)的“Linq”吗。没有代表,林克什么都不是。Net framework如何调用您的方法(在您自己的程序集中定义)
嗯,有一个办法。我们可以使用接口,但这和java的方式没有什么不同。这是c#的做法。
通过定义委托,您是在对类的用户说
“请随意在此处和此处放置与此签名匹配的任何方法
每次调用我的代理时都会调用它“
我想这就足以让你知道为什么要使用回调,而同样的事情可以通过调用方法来完成委托(你称它们为回调)是类型,它描述了它们可以存储在变量中的方法的类型。这使您可以选择动态选择程序使用的方法,而无需使用整个命令模式(您必须定义一个类,该类使用您选择的方法实现接口)。这不是重点。只是告诉编译器方法的签名并不完全符合委托或回调的目的
private static void TakeAction()
{
Fo1();
}
private static void Fo1(string s)
{
Console.WriteLine(s);
}