Delphi - 通用类型检查是否已创建

时间:2017-04-06 12:41:20

标签: delphi generics delphi-10.1-berlin

我有以下课程定义

  TBase<T> = class
  public
    class var Inst: T;
    class function GetClone: T;
  end;

我想检查是否已分配类var Inst。

class function TBase<T>.GetClone: T;
begin
 if TBase<T>.Inst = nil then //- error here. Trying with Assigned(TBase<T>.Inst) is also nor recognized.
    TBase<T>.Inst := TBase<T>.Create;
end;

如何检查我的类变量是否已分配?

1 个答案:

答案 0 :(得分:3)

您需要约束通用参数才能检查nil。例如:

TBase<T: class> = class //...

那样T必须是TObject或其后代,因此您可以检查nil

没有约束T可以是integer或任何其他不支持nil的值类型。