我的代码有问题

时间:2015-03-13 16:33:38

标签: c# object exception enums


我正在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); 
}

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

2 个答案:

答案 0 :(得分:5)

是的,请查看此代码(为了便于阅读,请重新格式化您的问题):

object key(int count, accidental ac)
{ 
    return key(0, accidental.none);
}

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

您不清楚想要从此方法返回的内容,但您需要以这种无限的方式停止递归。

答案 1 :(得分:4)

stackoverflow意味着您的应用程序中有一些未绑定的递归。在英语中,这实际上意味着你一次又一次地调用方法。

你能看到你如何在自己内部调用方法key吗?