什么时候应该在定义委托时使用匿名方法,什么时候应该使用正式定义的方法?
如果你需要在多个地方使用相同的逻辑,那么将其放到单独的方法中会更加合理。
如果你只需要使用一次这个逻辑并且它相当简短,那么使用匿名函数会更加合适。如果委托需要访问创建它的方法中的局部变量,那么匿名函数可以作为闭包来使用,这也非常方便。
此外,即使匿名函数相对较长,如果用于像Parallel Extensions这样的并行处理,它仍然可能很有用——这种情况下,你可以将现有的串行代码“原地”并行化。
你还应该考虑可测试性——如果你的委托代码足够复杂,需要自己的单元测试,那么将其公开为一个方法是非常明智的。(不幸的是,它必须作为一个内部方法使用InternalsVisibleTo
或者一个公共方法,而通常你希望它是私有的,但这就是生活。)
当应该只由委托执行函数时(换句话说:当我不需要在任何其他地方使用该函数),并且要执行的函数/方法相对较短(最多5行),我使用匿名方法。
但是,并没有明确规定何时使用什么。
在我看来,大多数情况下匿名方法对可读性没有贡献,所以我大多数情况下不使用它们。