C#调试错误

来源:百度知道 编辑:UC知道 时间:2024/06/06 15:50:33
private void kd_Click(object sender, EventArgs e)
{
if(kd.CheckState == CheckState.Unchecked)/*错误出在这,未处理的“System.StackOverflowException”类型的异常出现在 System.Windows.Forms.dll 中。错误提示说:确保没有无限循环或无限递归 kd为contextMenuStrip控件中的ITEM,请高手解答*/{
kd_Click(sender, e);
kd.CheckState = CheckState.Indeterminate;
kyellow.CheckState = kblue.CheckState = kred.CheckState = CheckState.Unchecked;

}else {
kd_Click(sender, e);

}

}
嗯,却实是这个问题,能不能给指点学习语言的心得,谢谢,尤其是我现在这个阶段的时候,想深入,知识不够.

if(kd.CheckState == CheckState.Unchecked)/{
kd_Click(sender, e);
...
}else {
kd_Click(sender, e);
}

现在看明白了吧?
你的kd_Click会无限制的调用下去。
因为不管是if还是else都会调用。

------------------
关于学习语言的心得,我可以给你说一些东西。
我本身就是从事C#授课的讲师,在前几天对所有学员的调查中有一个很有趣的现象,就是所有学习成绩好的学员,基本都是遇到问题时自己去寻找答案,比如通过msdn或网络等。另外一个,就是他们基本上都是因为兴趣的原因才来进行C#的培训的。
关于学习本身,我觉得还是多动手,多参考高手写的代码,遇到不懂的问题,一定从理论上找到最终的解释。

StackOverflowException 是指待定的方法调用太多,导致执行堆栈溢出
看有没有死循环或者递归
检查你写的代码