Ich bin leicht verwirrt. Natürlich kenne ich
as
und auch den Unterschied zwischen
TTest(abc)
und
(abc as TTest)
. Vor allem die Laufzeitprüfung und die nette Fehlermeldung. Ich gebe offen zu, dass ich
as
sehr selten nutze, da ich von meiner Einstellung her keine Überraschungen mag und somit auch keine Fehlermeldungen, ausgenommen meine. Das Objekt wird bei mir also zuerst überprüft und evtl. eine Alternative gewählt. Eine nette Fehlermeldung im Programm bringt mir nichts.
Trotzdem, ich hab gerade viel Code studiert und etliche Klassen und bin etwas verwirrt was den Mix angeht der vorherrscht. Einfach zu behaupten, dass wenn man sich sicher ist was kommt, dann
TTest(abc)
, wenn man sich überraschen will und eine nette Fehlermeldung haben will, dann
(abc as TTest)
. Guckt man sich so manchen Code an wird mal das eine mal das andere genommen. Den Sinn sehe ich oft nicht.
Wenn ich dann sowas sehe (nur mal als ein Beispiel von etlichen die mir heute aufgefallen sind), dann frage ich mich, hat es einen tieferen Sinn oder war der Programmierer an beiden Tagen lediglich unterschiedlich drauf. In der Regel gehe ich davon aus, dass ich nur den Sinn nicht erkenne
Delphi-Quellcode:
function TAbc.Get(Index: Integer): TGraphic;
begin
Result := TGraphic(inherited Get(Index));
end;
procedure TAbc.Add(Item: TGraphic);
begin
inherited Add(Item);
end;
function TDef.Get(Index: Integer): TBitmap;
begin
Result := inherited Get(Index) as TBitmap;
end;
procedure TDef.Add(Item: TBitmap);
begin
inherited Add(Item);
end;