从另一个类中的另一个方法返回main方法

时间:2017-11-06 12:04:01

标签: c#

我的主要方法允许用户选择进入班级Function中的方法。 Function中的方法有时会导致Function内的其他方法,这导致我无法使用return;函数返回主方法。我尝试使用MainClass.Main(null)返回,但问题是它重置了我的数组和列表中的存储数据。我怎么能回到主?

Main的示例代码:

public static void Main(string[] args)
    {
        int c;
        Function func = new Function();
        do
        {
            Console.Write("Choose: ");
            c = int.Parse(Console.ReadLine());
            switch (choice)
            {
                case 1:
                    Console.Clear();
                    func.Register();
                    break;
                case 2:
                    func.Login();
                    break;
                    }
        }while (c != 0);
    }

Function的示例代码:

public void LoggedIn(string n)
    {
        int c;
        name = n;
        Console.WriteLine("User {0} logged in!", name());
        do
        {
            Console.Write("Enter choice: ");
            choice = int.Parse(Console.ReadLine());
            Console.WriteLine();
            switch (choice)
            {
                case 1:
                    case1();
                    break;
                case 2:
                    case2();
                    break;
                case 3:
                    case3();
                    break;
            }
        } while (c != 0);
        Console.Clear();
        Console.WriteLine("USER LOGGED OUT.");
        Console.WriteLine();
        //return to main menu
    }

1 个答案:

答案 0 :(得分:4)

通常,有两种情况需要返回Main

  • 用户请求返回Main
  • 已达到可恢复的错误状态,需要返回Main

在第一种情况下,您需要构建一个逻辑,以便在代码中返回Main:每个方法都需要通知其调用者已请求返回Main,并且调用者必须遵守并返回。

例如,如果case1case2case3可以决定必须返回Main,请让他们返回bool,检查Login中的值,如下所示:

bool case1() {...}
bool case2() {...}
bool case3() {...}
...
switch (choice)
{
    case 1:
        if (case1()) return;
        break;
    case 2:
        if (case2()) return;
        break;
    case 3:
        if (case3()) return;
        break;
}

在第二个场景中(可恢复的错误)从方法中抛出异常,在Main中捕获它,进行清理并继续执行。