.NET 指南:事件与回调

回调方法是一种在操作或行为被完成的时候通过委托而自动被调用的方法。例如,一个异步设计模式就使用了被称作 AsyncCallback 的委托来指定在异步操作被完成的时候所执行的代码。这个设计模式被用在 BeginWrite 方法中,这个方法使用一个回调来处理来自于异步写入操作的结果。

事件是与回调相似的一种机制。事件允许特殊的用户代码在特殊的条件下被执行,通常用来调用一个状态变化或一个行为的开始与结束。事件比回调更容易使用,因为编程语言的语法和工具为了认可并处理事件而提供了统一的编码体验。同样,事件通过在拥有定义良好的签名模式的事件处理器中被调用的委托而进行处理。关于事件的更多信息,请参考:[事件的设计]。

下列指导方针有助于确保你所设计的使用了事件和回调的库已经遵循了最佳的实践。

考虑使用回调来允许用户提供能够通过框架而被执行的定制代码。
考虑使用事件来允许用户在不需要理解面向对象的情况下来定制框架的行为。
宁愿使用事件来替代清晰的回调,因为开发者对于事件是更加熟悉的并且事件能够与 Visual Studio 的语法自动完成进行集成。
避免在对于性能敏感的 API 中使用回调。

虽然许多开发者对于回调与事件的理解和使用是更简单的,但是从性能和内存消耗的观点出发,他们则没有虚拟成员来得那么划算。

理解通过调用一个委托,你将执行任何可能拥有安全性、正确性,以及兼容性影响的代码。

事件和回调允许任何代码在公共语言运行时(CLR)的环境中被执行。你的代码和安全回顾应该小心地检查这些可扩展点并对任何可能的安全弱点进行识别。

你可能感兴趣的:(.net)