Некоторые из моих знаний о топи c следующие. Если последовательные операторы в выражении имеют одинаковый приоритет, правило, называемое ассоциативность , используется для определения порядка, в котором эти операторы оцениваются. Кроме того, левоассоциативные операторы с одинаковым приоритетом оцениваются в порядке слева направо.
Я не понимаю, почему следующий код не генерирует исключение.
if (
object == null ||
object.Flag &&
object.Status == object2.Status
)
Что делать, если объект null
? В этом случае не вызывает ли вызов object.Status
исключение из-за высокого приоритета ==
над &&
, аналогично &&
над ||
? То есть,
if (
(object == null) ||
(object.Flag &&
(object.Status == object2.Status))
)
Порядок звонка,
object.Status == object2.Status
object.Flag
object == null
Что я упускаю из виду?