Почему нет; ; привести к ошибке сборки в VS? - PullRequest
0 голосов
/ 07 марта 2011

Неважно сколько;Если вы поместите в конец строки кода C #, компилятор не выдаст ошибку, и сборка будет успешной.

Почти во всех других языках, таких как C, C ++ и Java.Это не разрешено.

Ответы [ 9 ]

8 голосов
/ 07 марта 2011

Ваше утверждение, что этот шаблон недопустим в C, C ++ и Java, полностью неверно.

Я отсылаю вас к:

Язык программирования C, 2-е издание, раздел A9.2:

... конструкция называется нулевым оператором; оно часто используется для предоставления пустого тела для оператора итерации ...

Язык программирования C ++, 2-е издание, раздел r.6.2

Оператор выражения с отсутствующим выражением называется нулевым оператором; это полезно ... предоставить нулевое тело для оператора итерации ...

Спецификация языка Java, 1-е издание, раздел 14.5

Пустой оператор ничего не делает.

Спецификация языка C #, 4-е издание, раздел 8.3:

Пустой оператор используется, когда нет операций для выполнения в контексте, где требуется оператор.

6 голосов
/ 07 марта 2011

Пустое утверждение:

http://msdn.microsoft.com/en-us/library/aa664739(v=vs.71).aspx

Независимо от того, сколько у вас - все равно ничего не делает ....

Вы можете сделать то же самое в C/ C ++ и, вероятно, также Java:

Почему пустые выражения допустимы в C / C ++?

1 голос
/ 07 марта 2011

Интересно связано с блогом Эрика, почему это не предупреждение.

Из блога Эрика Липперта «Меня часто спрашивают, почему определенный кусок плохо пахнущего кода не выдает предупреждение компилятора».

http://blogs.msdn.com/b/ericlippert/archive/2011/03/03/danger-will-robinson.aspx

Дело в том,Было бы хорошо, если бы команда разработчиков компиляции потратила драгоценное время, чтобы ввести такое предупреждение?

1 голос
/ 07 марта 2011

; - пустое утверждение, и оно совершенно законно. Что вы возражаете против серии последовательных ;? : -)

1 голос
/ 07 марта 2011

Почему бы и нет?; Разграничивает операторы во многих формах потока кода.Один ; сам по себе просто означает «здесь ничего не происходит».Если собрать кучу ; вместе, все равно ничего не получится!

0 голосов
/ 07 марта 2011

Также рассмотрим языки, в которых символы новой строки или пробелы используются для обозначения конца блока кода вместо точек с запятой. На этих языках нельзя оставлять пустые строки.

0 голосов
/ 07 марта 2011

Это приводит к пустым командам, вот и все. Вероятно, Microsoft решила позволить своему блестящему языку снимать пробелы, если этого хочет программист. :)

Скорее всего, компилятор удаляет это / игнорирует его как часть оптимизации.

0 голосов
/ 07 марта 2011

Пустые операторы (точка с запятой, перед которыми нет ничего) допускаются как в C, C ++, C #, так и в Java.

0 голосов
/ 07 марта 2011

Добавление нескольких; означает, что вы добавляете пустые заявления. Они законны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...