Я довольно новичок в C# (начал изучать его неделю назад) с небольшим опытом в пакетном и Expression 2, и я работал над текстовой игрой, пытаясь выучить больше. Сначала я использовал goto-заявления, но, по большому счету, всех, кого я нашел, утверждения 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# (это в основном тот же вопрос, который у меня есть, кроме немного более неопределенного), но пример, который сделал Грег, для меня совсем не работает, до такой степени, что, вероятно, не стоит пытаться чтобы этот конкретный пример работал.
Я думаю, что более подходящим сайтом для этого вопроса будет сайт http://codereview.stackexchange.com/ – BWA
Да, не используйте операторы goto, никогда – Liam
@Liam Весь смысл сообщения состоял в том, чтобы не использовать goto заявления, когда-либо. –