Работает ли С# слева направо и поэтому делает проверку на Company.ID действительной?
Спасибо.
Ответ 1
По существу, да.
Оператор if ожидает, что логический оператор в круглых скобках определит оценку следующего оператора.
Используя оператор &&, если первая логическая проверка Company !=null является ложной, она будет выводить false, а не выполнять другую (Company.ID > 0).
Также (для справки) использование оператора || вернет true после первого оператора, если оно истинно и не оценивает второе.
Оператор условного-AND (& &) выполняет логическое-AND своих операндов bool, но при необходимости оценивает его второй операнд.
Ответ 3
& & оператор является так называемым оператором короткого замыкания. Он проверяет инструкции слева направо и останавливает тестирование, как только один из тестов выходит из строя. Если вы хотите, чтобы все тесты выполнялись, используйте оператор и.
Маргинально более длинный ответ: эта форма и будет использовать оценку короткого замыкания, поэтому, если компания равна нулю, она не будет выполнять вторую проверку.