Der Compiler könnte das durchaus machen, doch beim Zugriff auf einen Klassenzeiger ergibt sich ein Problem, dass sich bei einem Record nicht gibt: was, wenn der Klassenzeiger
Nil
ist? Ich mein, klar, der Compiler könnte entweder die
Access Violation einfach durchlassen oder aber einen speziellen Exceptiontyp auslösen, aber wann rechnet man als Verwender der Klasse mit sowas? Der Sinn von Properties ist, dass man als Entwickler der Klasse sehr leicht die Implementierung der Property ändern kann (zum Beispiel von nem Feld zu nem Getter) ohne, dass es der Verwender großartig bemerkt (natürlich generiert der Compiler dann anderen Code, aber der Quelltext ändert sich nicht). Bei solchen automatisch generierten Gettern käme dann auf einmal ein neuer Exceptiontyp hinzu, mit dem man nicht unbedingt rechnet, vielleicht nicht nur als Benutzer nicht, sondern auch als Entwickler nicht.
Und wo ist dann der Unterschied zu dem 0815 Getter, den wahrscheinlich die meisten an solch einer Stelle schreiben würden? (so wie du in dem untersten Beispiel) Wenn ich nen nilsafen Getter haben will, dann kann ich ihn immernoch selbst schreiben, aber für die Fälle wo ich bloß eine Property oder eine Funktion eines aggregierten Objekts nach außen leiten möchte könnt ich mir ein halbes Duzend Zeilen Boilerplate Code sparen.