C# 我在箱子里有一个开关。如何退出该开关并重复包含该开关的案例?

C# 我在箱子里有一个开关。如何退出该开关并重复包含该开关的案例?,c#,C#,我有嵌套的switch语句,用于在应用程序内导航菜单。 例如,如果输入开关的四边形部分,将显示菜单,并提示用户输入一个数字,该数字对应于有关四边形类型的某些计算。但是,如果我错误地选择了四边形而不是三角形,我想返回上一个菜单,在那里我可以选择所需的形状(三角形或四边形) 补充澄清: // main menu Console.WriteLine("1) Make new shape"); Console.WriteLine("2) Read all shapes&qu

我有嵌套的switch语句,用于在应用程序内导航菜单。 例如,如果输入开关的四边形部分,将显示菜单,并提示用户输入一个数字,该数字对应于有关四边形类型的某些计算。但是,如果我错误地选择了四边形而不是三角形,我想返回上一个菜单,在那里我可以选择所需的形状(三角形或四边形)

补充澄清:

// main menu
Console.WriteLine("1) Make new shape");
Console.WriteLine("2) Read all shapes");
Console.WriteLine("3) Delete shape");
Console.WriteLine("0) Exit");

// shape menu (option 1 from main menu)
Console.WriteLine("1) Triangle");
Console.WriteLine("2) Quadrangle");
Console.WriteLine("0) Back to main menu");

// quadrangle menu (option 2 from shape menu)
Console.WriteLine("1) Square");
Console.WriteLine("2) Rectangle");
Console.WriteLine("0) Back to shape menu");
所以,当我到达四边形菜单并输入0时,我想回到形状菜单。
换句话说,当我到达shape switch的案例2时,我希望能够返回到choice switch的案例1。

由于嵌套的开关嵌入到带有
的do循环中,而(choice!=0)
最后,如果将
choice
设置为不相等的值
0
,则应该自动发生这种情况。您只需要一种方法来抑制主菜单和用户输入。为此引入一个标志(布尔变量)

在嵌套开关中(或实际上在任何开关中),设置
choice=0choice=a_值\u不等于\u 0如果要再次将控件传递给选择开关

要回答您的具体情况:

bool getMainUserInput = true;   // <===============
int choice = 0;
do
{
  if (getMainUserInput) {       // <===============
    // show main menu & get user input
  }
  getMainUserInput = true; // Set as default for next loop <===============
  switch (choice)
  {
    case 1:
      // show shape menu & get user input for shape selection
      switch (shape)
      {
        case 0:
          // exit this switch and begin new iteration of do-while
        case 1:
          // show triangle menu & get user input for triangle case selection
          switch (triangle)
          {
            // cases
          }
          break;
        case 2:
          // show quadrangle menu & get user input for quadrangle case selection
          switch (quadrangle)
          {
            case 0:
              // exit quadrangle switch and enter case 1 of choice switch
              choice = 1; // loop again     <===============
              getMainUserInput = false;  // <===============
              break;
            case 1:
              // do something with square
              break;
            case 2:
              // do something with rectangle
              break;
          }
          break;
        default:
          // do something
          break;
      }
  }
} while (choice != 0);

bool getMainUserInput=true;//现在还不清楚你到底想要实现什么。如果您在案例2中-在四边形中,如果没有案例,则开关将匹配
中断
将带您回到零位。那么你想做什么?你能更好地解释一下“我想回到以前的菜单”是什么意思吗?“返回”难道不是简单地不设置
choice=0
bool getMainUserInput = true;   // <===============
int choice = 0;
do
{
  if (getMainUserInput) {       // <===============
    // show main menu & get user input
  }
  getMainUserInput = true; // Set as default for next loop <===============
  switch (choice)
  {
    case 1:
      // show shape menu & get user input for shape selection
      switch (shape)
      {
        case 0:
          // exit this switch and begin new iteration of do-while
        case 1:
          // show triangle menu & get user input for triangle case selection
          switch (triangle)
          {
            // cases
          }
          break;
        case 2:
          // show quadrangle menu & get user input for quadrangle case selection
          switch (quadrangle)
          {
            case 0:
              // exit quadrangle switch and enter case 1 of choice switch
              choice = 1; // loop again     <===============
              getMainUserInput = false;  // <===============
              break;
            case 1:
              // do something with square
              break;
            case 2:
              // do something with rectangle
              break;
          }
          break;
        default:
          // do something
          break;
      }
  }
} while (choice != 0);