我有以下课程定义
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;
如何检查我的类变量是否已分配?
答案 0 :(得分:3)
您需要约束通用参数才能检查nil
。例如:
TBase<T: class> = class //...
那样T
必须是TObject
或其后代,因此您可以检查nil
。
没有约束T
可以是integer
或任何其他不支持nil
的值类型。