我如何使用"是"来检查或确切的类(不是后代)?

Maw*_*awg 1 delphi

TBase = class(TObject)
...

TDerived = class(Tbase)
...

if myObject is TBase then ...
Run Code Online (Sandbox Code Playgroud)

如果myObject属于TDerived类,我可以以某种方式对此进行编码并返回false吗?

klu*_*udg 14

如果需要精确的类类型检查,请使用ClassType方法:

type

TBase = class(TObject)
end;

TDerived = class(Tbase)
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 A: TBase;

begin
  A:= TBase.Create;
  if A.ClassType = TBase then ShowMessage('TBase');  // shown
  A.Free;
  A:= TDerived.Create;
  if A.ClassType = TBase then ShowMessage('TBase again'); // not shown
  A.Free;
end;
Run Code Online (Sandbox Code Playgroud)