C#委托定义 - 匿名方法与正式定义的方法

时间:2009-07-12 19:11:45

标签: c# methods delegates anonymous

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

2 个答案:

答案 0 :(得分:11)

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

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

此外,即使匿名函数用于与Parallel Extensions并行化之类的东西,它也是有用的 - 部分原因在于您可以将现有的串行代码“并置”到“很大程度上。

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

答案 1 :(得分:5)

当应该执行的函数应该只由该委托执行时使用匿名方法(换句话说:当我在任何其他地方不需要该函数时),以及当必须执行的函数/方法时被执行的时间相对较短(最多5行)。

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