当我在另一个类中构造该类的对象时,会出现堆栈溢出错误
本文关键字:栈溢出 堆栈 对象 错误 另一个 | 更新日期: 2023-09-27 18:04:17
public bool update(registrationcommon objreg)
{
Userdl objuser = new Userdl();
try
{
return update(objreg);
}
catch (Exception e)
{
throw e;
}
}
是的,会的。假设Userdl
是registrationcommon
的子类或实现,则方法无条件地调用自己。(顺便说一句,你应该考虑改进你所有的名字。(
你怎么会期望它终止?假设你想调用一个不同的update
方法,那么想想你想调用哪个方法,以及应该如何调用它。它是另一个类中的方法吗?同一类中但参数不同的方法?
这是因为递归调用update
函数时没有停止:
public bool update(registrationcommon objreg)
{
// ...
return update(objreg);
// ...
}
你必须在某个时刻终止它。
我认为,在没有退出条件的情况下调用递归方法是有问题的!
每个update
调用update
,后者调用update
,后者。。。
每次调用方法时,您的当前位置都会被推送到堆栈中。在正常情况下,当您从方法调用返回时,您会从堆栈中"弹出"并返回到原来的位置。但是,如果在循环中执行此操作(例如您的示例(,则最终堆栈会溢出。因此,术语"堆栈溢出"应运而生。