4

定义委托时应何时使用匿名方法,定义委托时应何时使用正式定义的方法?

4

2 回答 2

11

如果您需要在多个地方使用相同的逻辑,则使用单独的方法是有意义的。

如果您只需要使用一次逻辑并且它相当短,那么使用匿名函数是有意义的。如果委托需要访问创建它的方法中的局部变量,匿名函数充当闭包,这也非常方便。

此外,如果匿名函数用于诸如并行扩展之类的并行化之类的事情,即使它相当长也是有用的——部分原因是您可以采用现有的串行代码并在很大程度上“就地”并行化它。

您可能还需要考虑可测试性 - 如果您的委托代码足够复杂以至于需要进行自己的单元测试,那么将其作为方法公开就很有意义。(不幸的是,它必须是内部方法 usingInternalsVisibleTo或公共方法,通常您通常希望它是私有的,但这就是生活。)

于 2009-07-12T19:16:42.920 回答
5

当应该执行的函数只能由该委托执行时(换句话说:当我在任何其他地方不需要该函数时),并且必须执行的函数/方法是相对较短(最多 5 行)。

但是,没有严格的规则定义何时使用什么。
恕我直言,我发现在大多数情况下匿名方法对可读性没有贡献,所以我大多不使用它们。

于 2009-07-12T19:16:34.947 回答