匿名方法太好了吗? (C#)

时间:2010-07-31 00:59:30

标签: c# anonymous-methods

问候,

我正在使用大量使用匿名方法的代码库,其中匿名方法链接其他匿名方法,这些方法调用第一个调用相同的东西。

main()
{
 anonymous1(); 
}
anonymous1()
{
  // call anonymous2 
}
anonymous2()
{
 //call anonymous3
}
anonymous3()
{
  // Call anonymous1
}

那是基本的分解,对不起过度简化。

我担心的是,其中一个匿名方法导致链接这些调用的问题。 IMO它看起来只是错误的递归会导致堆栈溢出异常。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

这一切都取决于你如何实现逻辑。

递归本身不是也不应该是一个问题。

对于使用递归的任何文件/文件夹算法,人们可能会争论相同。如果实施得当,您无需担心。

答案 1 :(得分:0)

除非编译器或JIT优化器应用尾调用优化(它可能不会,除非你在非调试模式上运行.NET CLR版本4并且您的特定代码允许这种优化),递归显然具有堆栈溢出的潜在风险。

这里的问题是, 该代码是否递归?如果是这样,它会很快停止,还是会无限期地递减?你应该只考虑最后一种情况下的实际问题。因此,我同意被吞噬的极乐世界的答案,它最终取决于逻辑。

你所拥有的代码可能结构更好 - 但是如果没有更具体的东西可以判断,恕我直言。

答案 2 :(得分:0)

它并不是真正的匿名方法,即使它们是匿名的,也会让事情变得有点难以跟踪。方法本身中的代码会导致堆栈溢出或任何其他类型的问题。只要代码尽可能清晰并完成其任务,您就不必担心结构。

递归没有错,你可以通过一些测试和考虑你的需要来减轻你的任何疑虑。