简体   繁体   English

连续输入以切换大小写,直到我按退出C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM