【发布时间】:2016-06-05 16:42:20
【问题描述】:
我有时会在此代码上遇到递归错误。
谁能告诉我为什么?
我想做的只是在井字游戏中自动播放。 没有什么花哨。刚刚学习。
private void Auto_play()
{
try
{
Random rnd = new Random();
int d = rnd.Next(0, 9);
label3.Text = d.ToString();
if (d == 0 && A1.Enabled)
A1.PerformClick();
else if (d == 1 && A2.Enabled)
A2.PerformClick();
else if (d == 2 && A3.Enabled)
A3.PerformClick();
else if (d == 3 && B1.Enabled)
B1.PerformClick();
else if (d == 4 && B2.Enabled)
B2.PerformClick();
else if (d == 5 && B3.Enabled)
B3.PerformClick();
else if (d == 6 && C1.Enabled)
C1.PerformClick();
else if (d == 7 && C2.Enabled)
C2.PerformClick();
else if (d == 8 && C3.Enabled)
C3.PerformClick();
else
Auto_play();
}
catch { }
}
【问题讨论】:
-
您能否详细说明“递归错误”的含义。您的意思是程序意外停止,还是继续无限循环?在 x 次移动之后是一致的,还是完全随机的?如果是崩溃,尝试捕获异常并阅读消息
catch (Exception ex) { string err = ex.Message;} -
System.Windows.Forms.dll 中出现“System.StackOverflowException”类型的未处理异常
-
确保没有无限循环或递归。
-
抱歉输入混乱。试图弄清楚这个网站:-)
-
大概,你的
PerformClick()并没有在它应该结束的时候结束游戏,这意味着这段代码会无限地调用自己。请显示PeformClick()(或事件处理程序)的代码。
标签: c# recursion stack-overflow