rzeczywiście odnoszą się do cech języka zwanego „zwierania wyrażeń logicznych”:
Oznacza to w ten sposób: Gdy wynik logicznej wypowiedzi nie może już zmienić, na przykład kiedy jest jasne, że wyrażenie będzie oceniać jako "prawda" lub "fałsz" bez względu na to, pozostałe części wyrażenia nie będą oceniane.
Na przykład C#, Java lub JavaScript to robią i można na nich polegać w tych językach (aby odpowiedzieć na pytanie).
W twoim przypadku, jeśli MojaKlasa nie jest zerowy:
MyClass == null
FALSE
- ponieważ jest to „lub” ekspresja, druga część nadal może zmienić wynik, więc jest ona oceniana
myClass.Property > 0
określa końcowy wynik
jeśli MojaKlasa jest zerowy:
MyClass == null
wartość true
- ponieważ jest to „lub” ekspresja, to nie ma znaczenia, co następuje
- nie więcej ewaluacja jest zrobione, końcowy wynik jest prawdziwy
Istnieją języki, które robią brak wyrażeń logicznych zwarcia. Klasyczna VB jest przykładem, tutaj "myClass.Property> 0" byłaby oceniana i powodowałaby błąd, gdyby MyClass był zerowy (nazywany "Nothing" w VB).
W języku C# określona jest dokładna kolejność. – Martijn