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
.
的值类型
我有以下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
.