当我在另一个类中构造该类的对象时,会出现堆栈溢出错误

本文关键字:栈溢出 堆栈 对象 错误 另一个 | 更新日期: 2023-09-27 18:04:17

    public bool update(registrationcommon objreg)
    {
        Userdl objuser = new Userdl();
        try
        {
          return update(objreg);
        }
        catch (Exception e)
        {
            throw e;
        }
    }

当我在另一个类中构造该类的对象时,会出现堆栈溢出错误

是的,会的。假设Userdlregistrationcommon的子类或实现,则方法无条件地调用自己。(顺便说一句,你应该考虑改进你所有的名字。(

你怎么会期望它终止?假设你想调用一个不同的update方法,那么想想你想调用哪个方法,以及应该如何调用它。它是另一个类中的方法吗?同一类中但参数不同的方法?

这是因为递归调用update函数时没有停止:

public bool update(registrationcommon objreg)
{
    // ...
    return update(objreg);
    // ...
}

你必须在某个时刻终止它。

我认为,在没有退出条件的情况下调用递归方法是有问题的!

每个update调用update,后者调用update,后者。。。

每次调用方法时,您的当前位置都会被推送到堆栈中。在正常情况下,当您从方法调用返回时,您会从堆栈中"弹出"并返回到原来的位置。但是,如果在循环中执行此操作(例如您的示例(,则最终堆栈会溢出。因此,术语"堆栈溢出"应运而生。