什么时候应该定义一个委托时,可以使用匿名方法和确定的委托时,当应正式定义的方法来使用?
Answer 1:
如果您需要使用相同的逻辑在多个地方,是有意义的使用单独的方法。
如果你只需要使用一次的逻辑,它是相当短的,是有意义的使用匿名函数。 如果代理需要访问本地变量在其中创建它的方法,匿名函数作为闭包也可以很方便的。
此外,匿名函数可能是有用的,即使当它用于类似的并行与并行扩展它的相当长的 - 那点的部分是,你可以利用现有的串行代码和parallelise为“到位”,在很大程度上。
您可能还需要考虑可测性 - 如果你委托的代码足够复杂,它保证其自身的单元测试,露出它作为一种方法使得有很大的意义。 (遗憾的是它必须是或者使用一个内部方法InternalsVisibleTo
或公共方法,经常在那里您通常会希望它是私有的,但生活就是这样。)
Answer 2:
我用匿名方法时应该执行的功能,只能由该委托执行的(换句话说:当我不需要在任何其他地方该功能),并且,当函数/方法必须要执行的相对较短(5行最大)。
但是,也有定义时使用何种没有严格的规定。
恕我直言,我觉得匿名方法没有在大多数的情况下有助于可读性,所以我大多不使用它们。
文章来源: C# delegate definition - anonymous methods vs. formally defined methods