【发布时间】:2016-08-16 09:14:07
【问题描述】:
我是 C# 的新手(一周前开始学习),在批处理和表达式 2 方面有一点经验,我一直在开发基于文本的游戏以尝试了解更多信息。起初我使用 goto 语句,但根据我发现的几乎每个人的说法,goto 语句是死亡和绝望的混合物,所以我想学习更清洁、更少邪恶的方法来达到同样的效果。这是我为演示我的意思而制作的一个糟糕的示例脚本:
using System;
namespace TestScript
{
class Program
{
public static void Main(string[] args)
{
string ConsoleReadinator;
string ConsoleReadinator2;
int Go = 0;
mainmenu:
do
{
Go = 0;
Console.Clear();
Console.WriteLine("Main Menu:");
Console.WriteLine("Store or something");
ConsoleReadinator = Console.ReadLine().ToUpper();
if (ConsoleReadinator == "STORE") { Go = 1; }
} while (Go == 0);
// In-game store example
{
Go = 0;
do
{
Console.Clear();
Console.WriteLine("In-game store I guess");
Console.WriteLine("Stuff you can buy, etc");
ConsoleReadinator2 = Console.ReadLine().ToUpper();
if (ConsoleReadinator2 == "GO") { Go = 1; }
} while (Go == 0);
goto mainmenu;
}
}
}
}
这个脚本是功能性的,但我想避免使用goto 作为返回先前语句以导航菜单并可能重复回合制游戏的算法的一种方式。我在Alternative to using goto statement in C# 中读到了有关为此使用方法的信息(这基本上与我的问题相同,只是有点模糊),但是 Greg 在那里制作的示例对我根本不起作用,以至于它可能不是值得尝试使该特定示例起作用。
【问题讨论】:
-
我认为更适合这个问题的网站是codereview.stackexchange.com
-
是的,永远不要使用 goto 语句
-
@Liam 这篇文章的重点是永远不要使用 goto 语句。
-
我可能会被激怒,但是经过大约 20 年的开发 - DOS、Windows、C++、ASP、C# 等。我认为在方法中使用 goto 是一种简单的好方法处理复杂代码中的错误。我对面的数字,C++ 高级工程师和可怕的聪明,同意。