-3

在使用事件处理程序和委托方法之间做出决定时,有哪些好的考虑因素?

例如,我选择委托方法选项来将功能实现推迟到另一个对象。我选择事件处理程序选项主要是为了让其他对象订阅更新。

但显然,正如您所看到的,这些都是非常粗略的标准。我在 Stackoverflow 上阅读了一些类似的问题,但它们针对的是非常具体的问题,而我对通用用法更感兴趣。

有什么输入吗?

谢谢。

4

1 回答 1

1

如上所述,它将根据您的情况而有所不同。 Delegates曾经要求你的逻辑有一个单独的方法来实现你的逻辑。这使得使用 aDelegate难以证明是正确的。然而,Lambda ExpressionsAnonymous MethodsaDelegate实际上变得非常有用,功能强大Type,很容易证明。

Delegates非常适合:

  • 事件处理程序
  • 启动线程
  • 回调
  • LINQ

带有特殊代码的模板的概念概念Delegate非常好。

Event Handler当您寻找 a以在操纵Classan 时提供某种形式的通知时,An将是理想的。Object最常见的实现和最简单的示例是User Interface. 每个Class代表一个,并且其中的Control每个都会有一个事件来指示何时进行更改。ControlInterface

AButton它的全部目的是被点击;但是在单击它之前,您不需要它来执行或做任何事情。一个例子Event Handler

它们通常通过使用Delegate. 推理是Delegate Object封装一个方法,以便可以匿名调用它。AnEvent是一种Class允许客户端提供Delegate在发生事件时应该调用的方法的方法Event

All an Event Handleris, 是一个被调用到相关的过程Event。这些Event Handlers需要两个要素:

  • 一种Delegate
  • (可选)保存该Event数据的类。

所以在大多数情况下,它们是齐头并进的。

显然,您的问题没有提供太多细节,因此很难实际回答或磨练您的标准。

一些可以帮助您的网站:

这些都是重要的概念,因此理解它们非常重要。希望这有助于澄清一点。

于 2013-02-08T16:38:08.593 回答