Zitat von
Roachford:
Warum sollte? Begründung bitte?
Du hast die Frage ja fast selber beantwortet.
- Den As-Operator kann ich nur auf Objekte anwenden.
- Alle Objekte sind von TObject abgeleitet.
- Also haben alle Objekte die Methoden und Eigenschaften von TObject.
- As TObject verkümmert immer zu einem simplen TypeCast.
- Ein As Operator auf eine Vorfahrklasse ist nicht notwendig und wird daher auch vom Compiler ignoriert
- As ist nur notwendig, wenn ich auf bestimmte Nachfahren einer Klasse testen/casten möchte.
Man würde ja auch nicht von einem Pointer (p) ausgehend folgendes schreiben
TObject(p) as TObject
wohl aber:
TObject(p) as TComponent
Anders ausgedrückt: Es gibt keine Möglichkeit (außer gewisse Plausibilitätstests) zu überprüfen, ob ein pointer auf ein Objekt zeigt. Und genau das müsste ja "As TObject" machen. Wenn es aber bereits ein Objekt ist, dann brauche ich auf TObject nicht zu testen (is) oder zu Konvertieren (as). Dann ist die Frage (As) ja bereits die Bedingung.
btw.: "is TObject" testet übrgiens nur auf <>nil.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.