我正在C#(视觉工作室)制作音乐制作人节目
这是我的代码:
int accCount = 0;
enum accidental { flat, sharp, none }
accidental thisAcc = accidental.none;
if (keyComboBox.SelectedItem.ToString().Length < 8)
{
MessageBox.Show("Please select a key!");
}
else switch (keyComboBox.SelectedItem.ToString())
{
case "C major - A minor":
accCount = 0; thisAcc = accidental.none;
break;
case "G major - E minor":
accCount = 1; thisAcc = accidental.sharp;
break;
...etc..
}
等等......
这一切都包含在postButton_click(postButton_Click(object sender, EventArgs e)
中
但是,当我单击该按钮时,会显示异常(类型&#39; System.StackOverflowException&#39;在Program.exe中发生未处理的异常)
如果我选择& #34; break&#34;,选择此行:
object key(int count, accidental ac) (here is the cursor){
return key(0, accidental.none);
}
有谁知道什么是错的?
对不起,如果这个问题不够具体,请告诉我。
答案 0 :(得分:5)
是的,请查看此代码(为了便于阅读,请重新格式化您的问题):
object key(int count, accidental ac)
{
return key(0, accidental.none);
}
那将只调用相同的方法...它将调用相同的方法...它将调用相同的方法等,直到它用完堆栈空间。
您不清楚想要从此方法返回的内容,但您需要以这种无限的方式停止递归。
答案 1 :(得分:4)
stackoverflow意味着您的应用程序中有一些未绑定的递归。在英语中,这实际上意味着你一次又一次地调用方法。
你能看到你如何在自己内部调用方法key
吗?