Я пишу текстовое приключение для курса в консоли Visual Studio C# и решил использовать оператор switch вместо цепочки if-else из-за того, насколько полезным может быть случай goto (до сих пор он работал замечательно). Я знаю, что каждый случай внутри самого переключателя должен быть константой, но мне интересно, распространяется ли это и на использование случая перехода. Например, у меня есть:
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 переменной с некоторыми настройками или это просто ограничение оператора switch? Если это последнее, я могу просто сделать цепочку if-else, но, на мой взгляд, более удобно вводить переменную. Любая помощь в этом очень ценится! Спасибо!
goto
case
, если вы находитесь внутриswitch
, чего нет во втором примере. Там у вас нет метки 2. См. msdn.microsoft.com/en-us/library/13940fs2.aspx, а затем сразу же см. cs.utexas.edu/~EWD /transscriptions/EWD02xx/EWD215.html и прекратите использоватьgoto
. - person Preston Guillot   schedule 10.10.2013goto
, не означает, что вы не можете реализовать этот дизайн с помощью оператораswitch
. Смотрите мой ответ, чтобы обойти это. - person poy   schedule 10.10.2013