是代表同样的事情回调?或者,他们以某种方式有关系吗?
A“回调”是指编码设计模式的术语,可用在具有函数指针,或它的类似物,以函数指针的任何语言(它是有点儿委托是什么)
在这个模式中,你将指针传递给一个函数到另一个函数,所以被调用函数中,它可以“回拨”你传递给它的功能。通过这种方式,你可以从外部方法,每个调用它...回调的一个例子是,当你有一个排序算法传递指针到不同的“回调”功能控制大块的方法的内部行为有要传递一个指针,指向“比较”任意对象对列表进行排序,以确定之前,其他肚里的功能。在一个调用sort方法,你可能传递通过对象名称进行比较的回调函数,另一次传递,通过物体重量,或任何比较的功能...
代表,OTOH,是一个特定的.NET类型充当一个函数指针特定的签名容器......在.NET托管代码,代表们创建和使用函数指针的唯一途径。因此,在净做回调,你实际上是通过一个委托......但代表可以在其他场景中使用,除了回调。 (具体而言,代表也可以用于实现从.NET线程池多线程)
回调也用来实现“观察者”的图案(使用活动NET中实现,其本身的特殊类型的委托的)
(我假设你在谈论.NET在这里。如果不是,请详细说明。)
委托是实现在.NET中回调的惯用方式 - 但你不必。你可以使用一个接口,例如。 (特别是你可以再有一个回调的一个方法上的错误打电话,一个成功。当然,你可以带两名代表,而不是...)
有很多的用途超出在.NET回调的代表 - 这取决于你认为什么是一个回调,但GUI事件处理程序,线程起动器,过滤器和LINQ预测(和更多!),以对象的所有使用委托。
一般地,一个代表是用于访问外部到拥有该方法的对象的方法的对象,而一个回调是保持委托的可变
在C#中,术语可互换使用
他们是手手有关。委托是在回调函数的样子的说明:
delegate void MyDelegate(string Text);
然后你就可以有一个可以在回调作为参数的函数。
//This will result in a MessageBox with "Lalalala"
MyFunctionThatGetsTheCallbackFunctionRef(MyCallBackFunc);
void MyFunctionThatGetsTheCallbackFunctionRef(MyDelegate TheFunction){
TheFunction("Lalalala");
}
void MyCallBackFunc(string Text){
//my callback
MessageBox.Show(Text);
}
服务类有一个叫做委托变量函数。调用类有想要运行名为回调优选的功能。
调用类设置委托给它的回调。
委托和回调之间的区别是视角:服务类调用被设置为调用类回调委托。