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

时间:2013-03-16 10:11:07

标签: c#

    public bool update(registrationcommon objreg)
    {
        Userdl objuser = new Userdl();
        try
        {
          return update(objreg);

        }
        catch (Exception e)
        {
            throw e;
        }
    }

4 个答案:

答案 0 :(得分:2)

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

你怎么期望终止?大概你打算调用一个不同的 update方法 - 所以想想你想要调用哪种方法,以及如何调用它。这是一个不同类的方法吗?同一类但具有不同参数的方法?

答案 1 :(得分:1)

这是因为你在没有停止的情况下递归调用update函数:

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

每个update来电update,调用update,其中...... {/ p>

每次调用方法时,您的当前位置都会被压入堆栈。在正常情况下,当您从方法调用返回时,您从堆栈中“弹出”并返回到您所在的位置。但是,如果您在循环(例如示例)中执行此操作,则最终堆栈会溢出。因此,术语“堆栈溢出”。