Rob*_*ove 13 delphi generics delphi-2009
我试图在Delphi 2009中的以下示例代码中实现clear.
interface
...
TFoo<T : IInterface> = class(TObject)
FField : T;
procedure Clear;
end;
...
implementation
...
procedure TFoo<T>.Clear;
begin
// Line Below Results In
// E2010 Incompatible types: 'T' and 'Pointer'
FField := nil;
end;
...
Run Code Online (Sandbox Code Playgroud)
如果"T"没有约束,我可以理解complie时间错误.但由于"T"必须是一个接口,我本以为这种语法会起作用.
有没有把FField设置为NIL,所以可以释放界面?
And*_*den 20
而不是nil
必须使用new Default(T)
返回泛型参数类型的默认值.对于接口来说nil
procedure TFoo<T>.Clear;
begin
FField := Default(T);
end;
Run Code Online (Sandbox Code Playgroud)