
Zitat von
maximov:

Zitat von
Robert_G:
...
Der IS Operator kann ja auch nicht wissen was du da zur Laufzeit machst.

wieso nicht ? Der Is-operator ist doch der laufzeit-klassenprüf-operator.
Sicher. Trotzdem kann es beim Kompilieren knallen wenn es für den Compiler absolut unmöglich erscheint, dass A von B abgeleitet ist.
Nachtrag:
Bevor die nächste Frage kommt. Einfach selbst testen
Delphi-Quellcode:
type
TBase = class
end;
T1stDescendant = class(TBase)
end;
T2ndDescendant = class(TBase)
end;
TComparedType = class(T2ndDescendant)
end;
var
X : TComparedType;
begin
if X is TBase then
Writeln('ist TBase'); // geht
if X is T1stDescendant then
Writeln('ist T1stDescendant'); // knallt
end.