我的代码有问题

0 c# enums exception object


我正在C#(visual studio)制作音乐制作人节目.
这是我的代码:

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..
}
Run Code Online (Sandbox Code Playgroud)

等等...
这一切都包含在postButton_click(postButton_Click(object sender, EventArgs e)
但是当我单击按钮时,会显示一个异常
(Program.exe中出现未处理的'System.StackOverflowException'类型的异常)

如果我选择"break",这一行是选择:

object key(int count, accidental ac) (here is the cursor){ 
    return key(0, accidental.none); 
}
Run Code Online (Sandbox Code Playgroud)

有谁知道什么是错的?
对不起,如果这个问题不够具体,请告诉我.

Jon*_*eet 5

是的,请查看此代码(从您的问题中重新格式化以获取可读性):

object key(int count, accidental ac)
{ 
    return key(0, accidental.none);
}
Run Code Online (Sandbox Code Playgroud)

这将只调用相同的方法...它将调用相同的方法...将调用相同的方法等,直到它用完堆栈空间.

目前还不清楚你打算从这个方法返回什么,但是你需要以这种无限的方式停止递归.