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

Sco*_*ies 4 c# methods delegates anonymous

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

Jon*_*eet 11

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

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

此外,即使匿名函数用于与Parallel Extensions并行化之类的东西,它也是有用的 - 这一点的一部分就是你可以在很大程度上采用现有的串行代码并将其"就地"并行化.

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


Fre*_*els 5

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

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