Вы на самом деле ссылаетесь на языковую функцию, называемую «короткое замыкание логических выражений»:
Это означает следующее: когда результат логического выражения больше не может измениться, например, когда становится ясно, что выражение будет иметь значение «истина» или «ложь», независимо от того, что, остальные части выражения не будут оцениваться.
Например, C #, Java или JavaScript делают это, и вы можете положиться на них на этих языках (чтобы ответить на ваш вопрос).
В вашем случае, если MyClass не равен нулю:
MyClass == null
оценивается как ложное
- , поскольку это выражение "или", вторая часть все еще может изменить результат, поэтому он оценивается
myClass.Property > 0
определяет конечный результат
если MyClass равен нулю:
MyClass == null
оценивается как истинное
- поскольку это выражение "или", не имеет значения, что следует за
- оценка больше не производится, конечный результат верен
Есть языки, которые не замыкают логические выражения. Классический VB является примером, здесь «myClass.Property> 0» будет оценен и выдаст ошибку, если MyClass будет нулевым (в VB он называется «Nothing»).