.net - 委托(delegate)和回调是否相同或相似?

标签 .net callback delegates

委托(delegate)和回调是一样的吗?或者它们之间有某种关联吗?

最佳答案

“回调”是一个术语,指的是一种编码设计模式,可用于任何具有函数指针或函数指针类似物(类似于委托(delegate))的语言

在此模式中,您将一个函数的指针传递给另一个函数,以便在被调用的函数中,它可以“回调”您传递给它的函数。通过这种方式,您可以通过每次调用不同的“回调”函数时传递指向不同“回调”函数的指针,从方法外部控制该方法的大部分内部行为...回调的一个示例是当您有排序算法时必须传递一个指向函数的指针,该函数将“比较”要排序的列表中的任意一对对象,以确定哪个在另一个之前。在一次调用排序方法时,您可能会传递一个按对象名称进行比较的回调函数,另一次则传递一个按对象重量或其他方式进行比较的函数...

委托(delegate)(otoh)是一种特定的 .Net 类型,充当函数指针的特定于签名的容器...在 .Net 托管代码中,委托(delegate)是创建和使用函数指针的唯一方法。所以在.Net中做回调,实际上是在传递一个委托(delegate)...但是除了回调之外,委托(delegate)还可以用于其他场景。 (具体来说,委托(delegate)还可以用于实现.Net线程池中的多线程)

回调还用于实现“观察者”模式(在 .Net 中使用事件实现,事件本身就是一种特殊类型的委托(delegate))

关于.net - 委托(delegate)和回调是否相同或相似?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/290819/

相关文章:

c# - 如何在 C# 中创建回调变量(真正的单播委托(delegate))

c# - 用反射拦截方法

c# - 在 Selenium WebDriver 中启动 Chrome Headless 仍然会导致浏览器窗口空白

.net - RESTful WCF 的最低配置

cakephp 行为 afterFind 没有在相关模型上调用

javascript - 如何在 JavaScript 的回调函数中设置变量?

ios - ASIHTTPREQUEST xCode - 设置委托(delegate)时崩溃

Swift delegate 在 uiviewcontroller 和 uitableviewcontroller 之间进行通信

c# - 如何获取某个UTF-8语言组内的所有字符?

c# - 传递大字节[]时WCF服务错误413 "Entity Too Large"