问候,
我正在使用大量使用匿名方法的代码库,其中匿名方法链接其他匿名方法,这些方法调用第一个调用相同的东西。
main()
{
anonymous1();
}
anonymous1()
{
// call anonymous2
}
anonymous2()
{
//call anonymous3
}
anonymous3()
{
// Call anonymous1
}
那是基本的分解,对不起过度简化。
我担心的是,其中一个匿名方法导致链接这些调用的问题。 IMO它看起来只是错误的递归会导致堆栈溢出异常。
提前感谢您的帮助。
答案 0 :(得分:2)
这一切都取决于你如何实现逻辑。
递归本身不是也不应该是一个问题。
对于使用递归的任何文件/文件夹算法,人们可能会争论相同。如果实施得当,您无需担心。
答案 1 :(得分:0)
除非编译器或JIT优化器应用尾调用优化(它可能不会,除非你在非调试模式上运行.NET CLR版本4并且您的特定代码允许这种优化),递归显然具有堆栈溢出的潜在风险。
这里的问题是, 该代码是否递归?如果是这样,它会很快停止,还是会无限期地递减?你应该只考虑最后一种情况下的实际问题。因此,我同意被吞噬的极乐世界的答案,它最终取决于逻辑。
你所拥有的代码可能结构更好 - 但是如果没有更具体的东西可以判断,恕我直言。
答案 2 :(得分:0)
它并不是真正的匿名方法,即使它们是匿名的,也会让事情变得有点难以跟踪。方法本身中的代码会导致堆栈溢出或任何其他类型的问题。只要代码尽可能清晰并完成其任务,您就不必担心结构。
递归没有错,你可以通过一些测试和考虑你的需要来减轻你的任何疑虑。