委托和回调函数是相同的吗?还是它们有某种关联?
.Net
。 - Sam(我假设你在谈论.NET。 如果不是,请详细说明。)
代理是在.NET中实现回调的惯用方法-但您并不必如此。 例如,您可以使用接口。(特别是,您可以使用一个带有一个方法用于错误调用和一个方法用于成功调用的回调。当然,您也可以取而代之使用两个委托...)
除了在.NET回调之外,代理还有很多用途-它取决于您认为什么是回调,但GUI事件处理程序,线程启动器,在LINQ to Objects中使用的过滤器和投影等都使用代理。
它们是密切相关的。 代理是回调函数的描述:
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);
}
通俗地讲,委托是一种用于访问拥有方法的对象之外的方法的对象,而回调是一个保存委托的变量。
在C#中,这两个术语可以互换使用。