Почему я должен использовать повреждение?

sp_help tablename 

В выводе ищут что-то вроде этого:

 Identity     Seed     Increment     Not For Replication    
 -----------  -------  ------------  ---------------------- 
 userid       15500    1             0        
15
задан Uwe Honekamp 14 October 2009 в 19:08
поделиться

5 ответов

Я подозреваю, что причина, по которой C # требует, чтобы разработчик помещал оператор break или terminal в конце каждого случая, - это для ясности.

Он не позволяет новичкам в языке предполагать, что переключатель ( ) в C # ведет себя как переключатель в C или C ++, где происходит провал. В C # провал происходит только в случаях соседних пустых случаев, что относительно очевидно.

РЕДАКТИРОВАТЬ: На самом деле в C # провал всегда незаконен. Однако законно иметь один случай, связанный с двумя или более ярлыками. Эрик Липперт подробно пишет об этом поведении и о том, чем оно отличается от операторов переключения C / C ++ .

Вам может быть интересно прочитать эту статью об Эрике Блог Lipperts.

34
ответ дан 30 November 2019 в 23:50
поделиться

Вопрос предполагает ложь, и поэтому на него нельзя ответить. Язык НЕ требует перерыва в конце раздела переключения. Язык требует, чтобы список операторов раздела switch имел недостижимую конечную точку . «break» - это наиболее часто используемый оператор, обладающий этим свойством. Совершенно законно заканчивать раздел switch с помощью «return;», «goto case 2;», «throw new Exception ();» или «while (true) {}» (или, в некоторых случаях, continue, хотя обычно это плохая идея).

Причина, по которой нам нужен список операторов с недостижимой конечной точкой, состоит в том, чтобы обеспечить соблюдение правила «без провалов».

Если ваш вопрос лучше сформулировать как «почему не»

39
ответ дан 30 November 2019 в 23:50
поделиться

Делая перерыв необязательным, вы открываете себя для таких ошибок:

switch (thing_result)
{
    case GOOD_THING:
        IssueReward();
        // UH-OH, missing break!
    case BAD_THING:
        IssuePunishment();
        break;
}

Разработчики языка C # пытались помочь программистам избежать ловушек в языках, которые были до него, обычно заставляя программист должен быть более явным (например, явное использование ключевого слова 'override' или 'new' для реализации или затенения виртуальных членов).

5
ответ дан 30 November 2019 в 23:50
поделиться

Насколько я понимаю, он был включен для соответствия синтаксису C ++.

0
ответ дан 30 November 2019 в 23:50
поделиться

Если вам не нужно добавлять разрыв, возникает проблема

switch (number)
{
    case 0:
    case 1:
        DoSomething();
}

Что произойдет, если number == 0? Это пустой случай, который ничего не делает, или будет выполнен DoSomething ()?

0
ответ дан 30 November 2019 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: