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

Delphi - generic type check if is created

我有以下class定义

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

我想检查 class 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;

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

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

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

这样 T 必须是 TObject 或其任何后代,因此您可以检查 nil.

没有约束 T 可以是 integer 或任何其他不支持 nil.

的值类型