Я пишу текстовое приключение для курса в консоли Visual Studio C# и решил использовать оператор switch вместо цепочки if-elses из-за того, насколько полезен случай goto (он отлично работал так далеко). Я знаю, что каждый случай внутри самого коммутатора должен быть постоянным, но мне интересно, распространяется ли это на использование случая goto. Например, у меня есть:Использование goto case (переменная); в C# switch
switch (location)
{
case 1:
break;
case 2:
break;
case 3:
break;
//I have 10 cases, each representing a location such as "Orc Cave", I just cut it down for brevity
default:
break;
}
Я хотел бы иметь возможность вводить целочисленную переменную, а затем перейти к этому числу, я следующий, чтобы выполнить это:
string travel2 = Console.ReadLine();//inputs a integer representing each location
int travel2A = Convert.ToInt32(travel2);
if (1<=travel2A && travel2A<=10)
{
goto case(travel2A);
}
else{
goto case(2);//current location
}
Все работает отлично еще есть это «Ожидается постоянное значение», предупреждающее о том, что это может привести к случаю (travel2A). Можно ли сделать goto case input переменной с некоторыми настройками или это просто ограничение оператора switch? Если это последний, я могу просто сделать цепочку if-elses, но, по-моему, более удобный вариант использования переменной. Любая помощь по этому поводу очень ценится! Спасибо!
Вы только можете '' goto' в case' если вы находитесь внутри 'switch', который вы не используете в своем втором примере. Там у вас нет метки «2». См. Http://msdn.microsoft.com/en-us/library/13940fs2.aspx, а затем сразу увидите http://www.cs.utexas.edu/~EWD/transcriptions/EWD02xx/EWD215.html и прекратите использовать 'goto'. –
Просто потому, что вы не можете использовать 'goto', не означает, что вы не можете реализовать этот проект с помощью инструкции' switch'. См. Мой ответ, чтобы обойти это. – Andrew
Вы упомянули о том, что новичок в C#. Я предлагаю, чтобы после того, как ваш код работает, попробуйте отправить его на http://codereview.stackexchange.com/ для конструктивной критики. – Brian