Myślę, że te dwa wyrażenia są dokładnie równoważne z semantyki języka punktu widzenia. Oba sposoby obejmują zwarcie.
Jestem trochę oszołomiony, że odpowiedź Andrzeja ma już dziesięć upgotes; Brzmi to dla mnie nonsensem, ale może naprawdę brakuje mi czegoś subtelnego.
EDIT
Więc podsumowując:
pytanie PO pyta „dlaczego ta optymalizacja zdarzyć”.
Tak naprawdę nie ma "optymalizacji". Dwa kody źródłowe C# są logicznie równoważne. ".Net Reflector" lub jakiekolwiek inne narzędzie do demontażu jest prawdopodobnie tak samo zdolne do dekompilacji tego samego IL w jednym lub drugim. Na poziomie IL istnieje tylko kilka warunkowych skoków, więc niekoniecznie istnieje sposób, aby dowiedzieć się, "która droga jest, a która jest inna" lub inne podobne równoważniki DeMorgan.
Fascynująco, ludzie są szalenie szczęśliwi głosując w górę lub w dół odpowiedzi na to pytanie, nawet jeśli (a może dlatego) oryginalne pytanie nie ma większego sensu (lub opiera się na błędnym założeniu).
Na szczęście dominuje mądrość tłumów (i inteligentnych osób, takich jak @Mehrdad). Hurray dla StackOverflow!
(Robię swoją odpowiedź na wiki, ponieważ nie chcę, aby przedstawiciel był "opowiadania o pytaniu", gdy przedstawiciel powinien otrzymać "dobre odpowiedzi na pytanie", ale myślę, że historia tego pytania jest interesujące.)
Jak się dowiedziałeś? –
Co się dzieje z efektem pobudzającym efekt uboczny? :) –
@pst: efekty uboczne na getter mogą być ignorowane przez kompilator. Zasadniczo kompilator nie może przyjmować żadnych skutków ubocznych dla modułów pobierających i ustawiających. –