【发布时间】:2010-11-10 03:24:26
【问题描述】:
定义委托时应何时使用匿名方法,定义委托时应何时使用正式定义的方法?
【问题讨论】:
标签: c# methods delegates anonymous
定义委托时应何时使用匿名方法,定义委托时应何时使用正式定义的方法?
【问题讨论】:
标签: c# methods delegates anonymous
如果您需要在多个地方使用相同的逻辑,则使用单独的方法是有意义的。
如果您只需要使用一次逻辑并且它相当短,那么使用匿名函数是有意义的。如果委托需要访问创建它的方法中的局部变量,匿名函数充当闭包,这也非常方便。
此外,如果匿名函数用于诸如并行扩展之类的并行化之类的东西,即使它相当长也很有用 - 部分原因是您可以采用现有的串行代码并将其“就地”并行化为很大程度。
您可能还需要考虑可测试性 - 如果您的委托代码足够复杂以至于需要进行自己的单元测试,那么将其作为一种方法公开是很有意义的。 (不幸的是,它必须是使用 InternalsVisibleTo 的内部方法或公共方法,通常您通常希望它是私有的,但这就是生活。)
【讨论】:
当应该执行的函数只应由该委托执行时(换句话说:当我在任何其他地方不需要该函数时),以及必须执行的函数/方法时,我使用匿名方法执行的时间相对较短(最多 5 行)。
但是,没有严格的规则定义何时使用什么。
恕我直言,我发现匿名方法在大多数情况下都不会提高可读性,所以我大多不使用它们。
【讨论】: