sp_help tablename
В выводе ищут что-то вроде этого:
Identity Seed Increment Not For Replication
----------- ------- ------------ ----------------------
userid 15500 1 0
Я подозреваю, что причина, по которой C # требует, чтобы разработчик помещал оператор break или terminal в конце каждого случая, - это для ясности.
Он не позволяет новичкам в языке предполагать, что переключатель ( ) в C # ведет себя как переключатель в C или C ++, где происходит провал. В C # провал происходит только в случаях соседних пустых случаев, что относительно очевидно.
РЕДАКТИРОВАТЬ: На самом деле в C # провал всегда незаконен. Однако законно иметь один случай, связанный с двумя или более ярлыками. Эрик Липперт подробно пишет об этом поведении и о том, чем оно отличается от операторов переключения C / C ++ .
Вам может быть интересно прочитать эту статью об Эрике Блог Lipperts.
Вопрос предполагает ложь, и поэтому на него нельзя ответить. Язык НЕ требует перерыва в конце раздела переключения. Язык требует, чтобы список операторов раздела switch имел недостижимую конечную точку . «break» - это наиболее часто используемый оператор, обладающий этим свойством. Совершенно законно заканчивать раздел switch с помощью «return;», «goto case 2;», «throw new Exception ();» или «while (true) {}» (или, в некоторых случаях, continue, хотя обычно это плохая идея).
Причина, по которой нам нужен список операторов с недостижимой конечной точкой, состоит в том, чтобы обеспечить соблюдение правила «без провалов».
Если ваш вопрос лучше сформулировать как «почему не»
Делая перерыв необязательным, вы открываете себя для таких ошибок:
switch (thing_result)
{
case GOOD_THING:
IssueReward();
// UH-OH, missing break!
case BAD_THING:
IssuePunishment();
break;
}
Разработчики языка C # пытались помочь программистам избежать ловушек в языках, которые были до него, обычно заставляя программист должен быть более явным (например, явное использование ключевого слова 'override' или 'new' для реализации или затенения виртуальных членов).
Насколько я понимаю, он был включен для соответствия синтаксису C ++.
Если вам не нужно добавлять разрыв, возникает проблема
switch (number)
{
case 0:
case 1:
DoSomething();
}
Что произойдет, если number == 0? Это пустой случай, который ничего не делает, или будет выполнен DoSomething ()?