Подтвердить что ты не робот

Поддерживает ли С#, если кодовые блоки без брекетов?

Как С# скомпилировать это?

        if (info == 8)
            info = 4;
        otherStuff();

Включит ли он последующие строки в кодовом блоке?

        if (info == 8)
        {
            info = 4;
            otherStuff();
        }

Или это займет только следующая строка?

        if (info == 8)
        {
            info = 4;
        }
        otherStuff();
4b9b3361

Ответ 1

Да, он поддерживает его, но он принимает следующий оператор, а не следующую строку. Так, например:

int a = 0;
int b = 0;
if (someCondition) a = 1; b = 1;
int c = 2;

эквивалентно:

int a = 0;
int b = 0;
if (someCondition)
{
    a = 1;
}
b = 1;
int c = 2;

Лично я всегда включаю фигурные скобки вокруг тел операторов if, и большинство конвенций кодирования, с которыми я сталкивался, используют тот же подход.

Ответ 2

if (info == 8)
{
    info = 4;
}
otherStuff();

Ответ 3

Он работает как C/С++ и Java. Без curlies он включает только следующее утверждение.

Ответ 4

Да, он поддерживает, если кодовые блоки без фигурных скобок, только первый оператор после if будет включен в блок if, как в вашем втором примере

Ответ 5

Конечно, "если" работает только для "info = 4".

Ответ 6

Это займет только следующую строку, поэтому ваш пример будет скомпилирован во второй возможный пример результата.

Ответ 7

В С#, если операторы запускают команды на основе скобок. Если никаких скобок не задано, она запускает следующую команду, если оператор является истинным, а затем запускает команду после. если условие ложно, просто продолжает следующую команду

поэтому

if( true )
    method1();
method2();

будет таким же, как

if( true )
{
    method1();
}
method2();