我的主要方法允许用户选择进入班级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
}
答案 0 :(得分:4)
通常,有两种情况需要返回Main
:
Main
或Main
在第一种情况下,您需要构建一个逻辑,以便在代码中返回Main
:每个方法都需要通知其调用者已请求返回Main
,并且调用者必须遵守并返回。
例如,如果case1
,case2
或case3
可以决定必须返回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
中捕获它,进行清理并继续执行。