C# 控制台应用程序中的菜单导航逻辑(前进、后退、退出)是否有一种简单的方法?
Is there a simple way for menu navigation logic (forward, rewind, exit) in C# console application?
我最近开发了一个小型 C# 控制台应用程序(大约 6000 行代码)。到目前为止,它工作完美但顺序。我想添加一个额外的维度。
要求。
用户必须输入值。输入值 XYZ 后,用户应该可以:
- 倒回(再次输入代码)
- 按 ENTER 键将出现下一个提示
- 按 ESC 键关闭程序
为了向您展示我的尝试,我做了一个小模型。到目前为止它运行完美我的问题很简单:
有没有更有效的方法来编码我编写的代码?我有一种感觉,就逻辑而言,我没有以非常高效的方式对其进行编程。由于这是大约的第一个“提示”,我会得到越来越多的嵌套。 10 个提示...
非常感谢...
// Getting car brand.
try
{
while (programEnd == 0)
{
Console.Clear();
model.Brand_definition(this.view.Brand_prompting());
this.view.Selection();
ConsoleKeyInfo select = Console.ReadKey(true);
if (select.Key == ConsoleKey.Z)
{
}
else if (select.Key == ConsoleKey.Enter)
{
Console.WriteLine(" NEXT ");
Console.ReadKey();
}
else if (select.Key == ConsoleKey.Escape)
{
programEnd = 1;
Console.Clear();
Console.WriteLine(" ");
Console.WriteLine(" ");
Console.WriteLine(" TEST OUTPUT - QUIT APP 1 ");
Thread.Sleep(2000);
Environment.Exit(0);
}
else
{
int exiter = 0;
while (exiter == 0)
{
if (select.Key == ConsoleKey.Escape)
{
Console.Clear();
Console.WriteLine(" ");
Console.WriteLine(" ");
Console.WriteLine(" TEST OUTPUT - QUIT APP 2 ");
Thread.Sleep(2000);
Environment.Exit(0);
}
else if (select.Key == ConsoleKey.Enter)
{
Thread.Sleep(2000);
Console.Clear();
Console.WriteLine(" NEXT 2 ");
}
else if (select.Key == ConsoleKey.Z)
{
exiter = 1;
}
else
{
select = Console.ReadKey(true);
}
}
}
}
}
catch (Exception exEnd)
{
Console.WriteLine(" ERROR! ", exEnd);
programEnd = 1;
}
您可以重构代码并将部分代码提取到单独的方法中。例如,您可以提取 try 块内的代码:
try
{
RunApp();
}
catch (Exception exEnd)
{
Console.WriteLine(" ERROR! ", exEnd);
programEnd = 1;
}
然后在 RunApp 方法中你可以有这样的东西:
private void RunApp()
{
while (programEnd == 0)
{
Console.Clear();
model.Brand_definition(this.view.Brand_prompting());
this.view.Selection();
ConsoleKeyInfo select = Console.ReadKey(true);
switch (select.Key)
{
case ConsoleKey.Z:
Z_Case();
break;
case ConsoleKey.Enter:
Enter_Case();
break;
case ConsoleKey.Escape:
Escape_Case();
break;
default:
Default_Case();
break;
}
}
}
您可以根据需要传递给这些方法。
我最近开发了一个小型 C# 控制台应用程序(大约 6000 行代码)。到目前为止,它工作完美但顺序。我想添加一个额外的维度。
要求。 用户必须输入值。输入值 XYZ 后,用户应该可以:
- 倒回(再次输入代码)
- 按 ENTER 键将出现下一个提示
- 按 ESC 键关闭程序
为了向您展示我的尝试,我做了一个小模型。到目前为止它运行完美我的问题很简单:
有没有更有效的方法来编码我编写的代码?我有一种感觉,就逻辑而言,我没有以非常高效的方式对其进行编程。由于这是大约的第一个“提示”,我会得到越来越多的嵌套。 10 个提示...
非常感谢...
// Getting car brand.
try
{
while (programEnd == 0)
{
Console.Clear();
model.Brand_definition(this.view.Brand_prompting());
this.view.Selection();
ConsoleKeyInfo select = Console.ReadKey(true);
if (select.Key == ConsoleKey.Z)
{
}
else if (select.Key == ConsoleKey.Enter)
{
Console.WriteLine(" NEXT ");
Console.ReadKey();
}
else if (select.Key == ConsoleKey.Escape)
{
programEnd = 1;
Console.Clear();
Console.WriteLine(" ");
Console.WriteLine(" ");
Console.WriteLine(" TEST OUTPUT - QUIT APP 1 ");
Thread.Sleep(2000);
Environment.Exit(0);
}
else
{
int exiter = 0;
while (exiter == 0)
{
if (select.Key == ConsoleKey.Escape)
{
Console.Clear();
Console.WriteLine(" ");
Console.WriteLine(" ");
Console.WriteLine(" TEST OUTPUT - QUIT APP 2 ");
Thread.Sleep(2000);
Environment.Exit(0);
}
else if (select.Key == ConsoleKey.Enter)
{
Thread.Sleep(2000);
Console.Clear();
Console.WriteLine(" NEXT 2 ");
}
else if (select.Key == ConsoleKey.Z)
{
exiter = 1;
}
else
{
select = Console.ReadKey(true);
}
}
}
}
}
catch (Exception exEnd)
{
Console.WriteLine(" ERROR! ", exEnd);
programEnd = 1;
}
您可以重构代码并将部分代码提取到单独的方法中。例如,您可以提取 try 块内的代码:
try
{
RunApp();
}
catch (Exception exEnd)
{
Console.WriteLine(" ERROR! ", exEnd);
programEnd = 1;
}
然后在 RunApp 方法中你可以有这样的东西:
private void RunApp()
{
while (programEnd == 0)
{
Console.Clear();
model.Brand_definition(this.view.Brand_prompting());
this.view.Selection();
ConsoleKeyInfo select = Console.ReadKey(true);
switch (select.Key)
{
case ConsoleKey.Z:
Z_Case();
break;
case ConsoleKey.Enter:
Enter_Case();
break;
case ConsoleKey.Escape:
Escape_Case();
break;
default:
Default_Case();
break;
}
}
}
您可以根据需要传递给这些方法。