使用静态方法防止Stackoverflow异常

Tar*_*rik -1 c# stack-overflow

我正在编写一个类,它递归地实例化自己,以便将XSD解析为另一种类型的XSD.它从互联网上下载并遍历每个元素,如果其中一个元素complexType位于另一个元素中,URI那么它只是通过创建自身实例之一来做同样的事情.

但是当XSD如此庞大且有许多外部链接时,今天我的课程因为Stackoverflow异常而崩溃了.

我决定将一些实例方法Helper.cs作为静态成员放到另一个class()中,现在从解析器类中调用它们.

但我想知道这是一个很好的解决方案,可以解决Stackoverflow异常吗?我知道如何将实例方法放入堆栈框架中,但静态方法是否会以相同的方式处理?它会导致任何Stackoverflow异常吗?

SLa*_*aks 8

实例方法和静态方法之间的唯一区别是实例方法需要额外的隐藏this参数.(实际上,实例方法也可以virtual,但这在这里没有任何区别)

它们同样容易受到堆栈溢出的影响.

如果要避免大输入的堆栈溢出,请不要使用递归.