Почему компилируется код с несколькими точками с запятой? - PullRequest
4 голосов
/ 24 сентября 2010

Мне просто любопытно узнать, почему это разрешено.

int i=0;;

Я случайно набрал это. Но программа скомпилирована. Через много дней я заметил, что набрал ;;

После этого я попробовал с разными символами вроде ~, !, : etc etc

Почему это не разрешено, когда разрешено первое.

Просто интересно узнать.

Ответы [ 5 ]

16 голосов
/ 24 сентября 2010

Вы ввели пустое утверждение:

int i=0; // that's one statement
; // that's another

Законно, что оператор в C # не имеет тела.

Из раздела 8.3 спецификации языка C # :

Пустое утверждение ничего не делает.

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

5 голосов
/ 24 сентября 2010

Пустой оператор действительно может быть полезен.Посмотрите на этот интересный пример бесконечного цикла:

    for (;;)
    {
        // loops infinitely
    }

Запустите следующую версию в качестве доказательства, но с перерывом в бесконечность:

    int count = 0;
    for (;;)
    {
        count++;
        if (count > 10) break;
    }

    Console.WriteLine("Done");

Но, если вы действительно хотите сделать бесконечный цикл, используйте: while (true) {} вместо for (;;) {}.В то время как (true) менее кратко, легче для чтения и легко сообщает о намерении зацикливаться бесконечно.

1 голос
/ 24 сентября 2010

C # (и многие другие языки) используют точку с запятой для разделения операторов, а не заботятся о переносе строк. Пустые операторы действительны, поэтому вы можете поставить столько точек с запятой, сколько захотите. Это также означает, что вы можете поместить несколько операторов в одну строку или разбить один оператор на несколько строк - компилятору все равно.

1 голос
/ 24 сентября 2010

Дополнительная ; просто выделяет дополнительную, хотя и пустую, «строку» кода C #. Другие символы не имеют смысла, когда они просто размещаются самостоятельно.

0 голосов
/ 24 сентября 2010

Потому что точка с запятой означает конец оператора. Другие нет. Вы можете иметь пустое заявление.

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