2

我是 C# 新手。现在我已经学会了如何在应用程序中创建自定义事件。

我想知道我们为什么要使用回调?事件似乎比回调更简单,并且不需要在参数中传递委托。

我已经提到了msdn,并且已经提到了

事件就像匿名广播,而回调就像握手

请为此声明提供一些示例。我很困惑在哪里使用回调和事件处理程序,因为我找不到它们之间的任何区别。

4

1 回答 1

4

两者之间的语义差异,以及让您感到困惑的陈述的原因是,实际上回调和事件之间存在语义差异。

从技术上讲,您实现它们的方式几乎相同,所以让我解释一下。

回调是指您正在调用的代码的合约希望您提供某个地方让它回调、报告进度、说它已完成,或者它需要通知您的任何事情。

这就像您打电话给图书馆并要求他们为您找到一本书,然后一旦他们给您回电。你期待电话的到来。此外,除非明确要求,图书馆不会告诉人们他们找到的书籍。如果他们在书架上或书架后面发现另一本书,不要指望他们会因此打电话给您(或其他任何人)。

另一方面,事件是“匿名广播”,类似于在树林里大喊大叫。您基本上是在说“如果有人在乎,X就发生了”。在此之前,您没有被明确告知要打电话给任何人,您也不知道谁会听。

从技术上讲,在您的代码中,您将通过将委托传递给方法或挂钩到事件(将委托存储到方法)来实现两者,因此在这方面它们是同一枚硬币的两个方面,但是它们的含义不同。

一般来说,事件感觉更像“C#-ish”,并且通常更容易处理,但这两者在编程语言和您的工具箱中都有自己的位置。

于 2013-06-27T16:29:56.113 回答