C#召回方法导致程序退出

时间:2013-10-06 13:25:45

标签: c# recursion menu

我一直在编写一个文字冒险游戏。当程序运行时,调用Boot()方法,读取%APPDATA%.ilan \ texert用于设置文件(同时只有username.txt)。在Boot()之后,它会转到MainMenu(),用户可以选择播放,转到选项或退出。当用户进入“选项”菜单并返回时,然后尝试播放游戏或返回选项菜单,游戏退出,这不应该发生。 Source
Boot() =第455行 MainMenu() =第579行 Main() =第504行 我相信这是因为int在方法本身中声明,并且因为多次调用该方法,int变量保留其先前的值。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

在第610行,您检索MainMenu方法的结果,然后在第617行调用您的OptionMenu方法,但是一旦OptionMenu()方法触发,您就不会做任何其他事情来阻止您的应用程序在控制返回后停止Main()方法。即使您在OptionMenu()方法中调用MainMenu(),也没有评估该调用的结果,所以您只需将菜单写入控制台并返回Main()。你需要在Main()方法中放置一个循环,它将重复调用你的MainMenu()方法,评估所选的结果,其他菜单选项如OptionMenu()将返回到这个循环,而不是自己调用主菜单。像这样:

string whatToDo = "null";
bool exitApp = false;
while (!exitApp)
{
    whatToDo = AdvTime.MainMenu();
    if (whatToDo.Contains("play"))
    {
        Menu("null", false);
    }
    if (whatToDo.Contains("options"))
    {
        AdvTime.OptionMenu();
    }
    if (whatToDo.Contains("exit"))
    {
        exitApp = true;
    }
    if (whatToDo.Contains("null"))
    {
        AdvTime.MMError("OM");
    }
}