[英]Continuous input to switch case until i press exit c#
I am trying to create a program where the application should never exit until I press option '6'. 我正在尝试创建一个程序,在该程序中,在我按选项'6'之前,应用程序永远不应退出。 Below is my sample program: Right now, if I press any option, it executes the corresponding method and console window closes (exits the application) after it is done executing. 下面是我的示例程序:现在,如果我按任意选项,它将执行相应的方法,并且控制台窗口在执行完毕后关闭(退出应用程序)。 I want the console to wait for the next option to be entered. 我希望控制台等待输入下一个选项。
Console.WriteLine(@"Select one of the following option:
1-Write Apps
2-Write Drivers
3-Write OS
4-Write Packages
5-All the above
6-Exit");
string strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
switch (selectionKey)
{
case 1:
DoApps(reqObj);
return;
case 2:
DoDrivers(reqObj);
return;
case 3:
DoOS(reqObj);
return;
case 4:
DoPackages(reqObj);
return;
case 5:
DoAll(reqObj);
return;
case 6:
Environment.Exit(0);
return;
default:
DoAll(reqObj);
return;
}
You can just place your code into a loop, and change the return
to break
statements: 您可以将代码放入循环中,然后将return
更改为break
语句:
while(true) // Loop forever
{
string strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
switch (selectionKey)
{
case 1:
DoApps(reqObj);
break; // Break, don't return
case 2:
DoDrivers(reqObj);
break;
case 3:
DoOS(reqObj);
break;
case 4:
DoPackages(reqObj);
break;
case 5:
DoAll(reqObj);
break;
case 6:
Environment.Exit(0);
break;
default:
DoAll(reqObj);
break;
}
}
If you wish to prompt for input each iteration, you can move the prompt into the loop, as well. 如果希望在每次迭代时提示输入,也可以将提示移入循环。
Just wrap the whole thing in a while statement. 只需将整个内容包装在while语句中即可。
while (true)
{
Console.WriteLine(@"Select one of the following option:
1-Write Apps
2-Write Drivers
3-Write OS
4-Write Packages
5-All the above
6-Exit");
string strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
switch (selectionKey)
{
case 1:
DoApps(reqObj);
break;
case 2:
DoDrivers(reqObj);
break;
case 3:
DoOS(reqObj);
break;
case 4:
DoPackages(reqObj);
break;
case 5:
DoAll(reqObj);
break;
case 6:
Environment.Exit(0);
break;
default:
DoAll(reqObj);
break;
}
}
First, what I'd do is make it into a method: 首先,我要做的是使其成为一种方法:
public void AskForInput()
{
Console.WriteLine(@"Select one of the following options:
1-Write Apps
2-Write Drivers
3-Write OS
4-Write Packages
5-All the above
6-Exit");
string strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
switch (selectionKey)
{
case 1:
DoApps(reqObj);
return;
case 2:
DoDrivers(reqObj);
return;
case 3:
DoOS(reqObj);
return;
case 4:
DoPackages(reqObj);
return;
case 5:
DoAll(reqObj);
return;
case 6:
Environment.Exit(0);
return;
default:
DoAll(reqObj);
return;
}
}
and then just use it like this: 然后像这样使用它:
for (;;) AskForInput();
using System;
namespace LoopUntilSelectionTester
{
class Program
{
static void Main()
{
string key;
while((key = Console.ReadKey().KeyChar.ToString()) != "6")
{
int keyValue;
int.TryParse(key, out keyValue);
ProcessInput(keyValue);
}
}
private static void ProcessInput(int keyValue)
{
switch (keyValue)
{
case 1:
DoApps(reqObj);
break;
case 2:
DoDrivers(reqObj);
break;
case 3:
DoOS(reqObj);
break;
case 4:
DoPackages(reqObj);
break;
case 5:
DoAll(reqObj);
break;
}
}
}
}
This worked for me: 这为我工作:
Console.WriteLine(@"Select one of the following option:
1-Write Applications XML
2-Write Drivers XML
3-Write Operating Systems XML
4-Write Packages XML
5-All the above
6-Exit");
string strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
while (true)
{
switch (selectionKey)
{
case 1:
DoApplications(reqObj);
strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
break;
case 2:
DoDrivers(reqObj);
strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
break;
case 3:
DoOperatingSystems(reqObj);
strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
break;
case 4:
DoPackages(reqObj);
strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
break;
case 5:
DoAll(reqObj);
strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
break;
case 6:
Environment.Exit(0);
break;
default:
DoAll(reqObj);
strReadKey = Console.ReadKey().KeyChar.ToString();
int.TryParse(strReadKey, out selectionKey);
break;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.