2010-08-24 4 views

ответ

32

По существу, да.

Оператор if ожидает, что в круглых скобках оператор boolean определит оценку следующего оператора.

Использование оператора &&, если первая логическая проверка Company !=null является ложной, инструкция будет возвращать false, а не выполнять другую (Company.ID > 0).

Также (для справки) оператор || вернет true после первого оператора, если он является истинным и не оценивает второй.

+1

Ссылка: http://msdn.microsoft.com/en-us/library/2a723cdk.aspx – cofiem

+0

Это будет короткое замыкание из-за '&&', не имеет ничего общего с 'if'. Я полагаю, что я бы прокомментировал это, чтобы быть полным, иначе +1. – Marc

+0

@Marc - обновлено с более точным объяснением, спасибо. – cjk

0

Короткий ответ: Да

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

6

MSDN:

Условные-оператор И (& &) выполняет логические и его операнды BOOL, но только оценивает свой второй операнд, если это необходимо.

3

& & оператор является так называемый оператором короткого замыкания. Он проверяет инструкции слева направо и останавливает тестирование, как только один из тестов выходит из строя. Если вы хотите, чтобы все тесты выполнялись, используйте оператор &.

Более подробную информацию можно найти here

3

Да, это делает. Вы можете доказать, подставив условия для вызова функции:

if (myfunc() && myfunc2()) 
{ 
    console.writeline("Success"); 
} 

... 

bool myfunc() 
{ 
    console.writeline("func1"); 
    return false; 
} 
bool myfunc2() 
{ 
    console.writeline("func2"); 
    return true; 
} 

Должен ли выход:

func1 
Success 
Смежные вопросы