Ответ 1
Это простой вопрос с простым ответом, но я просто хотел добавить что-то важное. Часто люди понимают, что он ничего не делает, и особенно для случая, который вы представили, полу-двоеточие - это ненужное прерывание строки.
Но в чем причина этого?
На самом деле, эти пустые утверждения разрешены для оператора:
// Use an empty statement as the body of the while-loop.
while (Method())
;
Я согласен, что ничего не делает. Но это может помочь определенным циклам соответствовать синтаксическим требованиям языка, и я думаю, что это то, что люди должны понимать из него. Как сказал другой, я согласен, что вы можете удалить его, я просто хотел подчеркнуть, почему С# позволяет это.
Дальнейшее уточнение
Пустой оператор используется, когда вам не нужно выполнять операцию, в которой требуется инструкция. Он просто передает управление конечной точке инструкции. Это не имеет никакого эффекта, это чистый синтаксический сахар.
Как указано в @PaulF, в приведенном выше примере вы можете использовать пустой блок ({}
). Это было бы совершенно справедливо и имело бы такой же эффект.
Опять же, все сводится к стилю. Вам это не нужно, но это, безусловно, поможет вам соответствовать любым правилам вашей среды кодирования.
Обычные прецеденты (где можно было видеть пустые утверждения)
-
В то время как цикл с пустым телом (тот же случай, что я подчеркивал выше)
void ProcessMessages() { while (ProcessMessage()) ; // Statement needed here. }
-
goto
(редко используется, но все еще действует)void F() { //... if (done) goto exit; //... exit: ; // Statement needed here. }
Из MSDN
-
Объявление класса (Подходит для @EricLippert для его создания)
class SomeClass { ... };
Обратите внимание, что в этом случае, как указано в @EricLippert в разделе комментариев, это просто любезность программистам C++, которые используются для ввода semis после классов; C++ требует этого.
Хотя общее использование пустых утверждений дискутируется главным образом из-за путаницы, которую они могут принести, на мой взгляд, синтаксически говоря, у них есть место на С#. Мы не должны забывать, что С# является приращением C++ (который в основном объясняет #
aka. Четыре символа "+" в сетке "два на два") и по историческим причинам, позволяя пустым операторам облегчать переход.