为什么你需要c#中的部分方法?可以使用事件来实现相同的目标吗?

Kar*_*rim 11 .net c# partial-methods

我正在阅读"Apress Pro LINQ:C#语言集成查询"这本书,我遇到了部分方法,但我真的不明白它们的需要是什么.

我认为本书中的示例(更改前后的属性)可以使用事件来实现.那有什么解释吗?

Jar*_*Par 21

是的,您可以使用部分方法实现与事件类似的效果.部分方法实际上只是让代码生成器(主要是设计者)为非生成代码生成钩子的一种方法.事件可以填补这个角色.

然而,特别是部分方法优于事件是有利的

  • 如果没有实现,则从生成的IL中完全删除部分方法调用.这不能用事件来完成.
  • 部分方法的设计是为了解决有1个钩子和1个消费者的提供者的问题.事件旨在为具有N个消费者的1个提供者建模,并且具有这种设计带来的开销
  • 没有订购问题(谁先行).对于事件,您需要确保订阅事件的代码在设计器生成引发事件的代码之前运行.如果说设计者生成构造函数,则这并不总是可行的.部分方法没有这样的问题.