Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: Typumwandlung mit Generika

  Alt 29. Mär 2009, 22:54
da Links steht meißtens das, was man hauptsächlich verwendet ... und man muß ja nicht nur ein Delphi in den Pfötchen halten

Zitat von Panthrax:
Ich hatte gedacht, der Compiler verweigert die Typumwandlung "B as TClassA" mit "Inkompatible Typen".

So reagiert er jedenfalls auf "StringList as TComponent".
B und A sind ja verwandt ... is/as prüft ob die angegebene Klasse sich selber oder ein Vorfahre von sich ist.

TStringList > TStrings > TPersistent > TObject

also nur dieses hier geht
Delphi-Quellcode:
TStringList is TStringList
TStringList is TStrings
TStringList is TPersistent
TStringList is TObject
"TStringList is TComponent" geht nicht, da es kein Vorfahre ist und demnach TStringList keine Eigenschaften von TComponent besitzt.


[add]
andersrum geht nur dieses nicht (ungültige Typumwandlung)
Delphi-Quellcode:
procedure Test;
var
  A: TClassA;
begin
  A := TClassA.Create;
  try
    ...

    WriteLn('(A as TClassB).Method1;');
    (A as TClassB).Method1;

    WriteLn('(A as TGenericClassB<TObject>).Method1;');
    (A as TGenericClassB<TObject>).Method1;
  finally
    A.Free;
  end;
  ReadLn;
end;
$2B or not $2B
  Mit Zitat antworten Zitat