我正在Delphi XE7中工作。目前,我们做了很多这样的事情:
function TMyClass.Clone(): TMyClass;
begin
Result := TMyClass.Create();
// Copy values/settings from Self to Result
end;
使用它通常如下所示:
if (x <> nil) then
y := x.Clone()
else
y := nil;
在XE7中使用它,在32和64上可以正常工作,但是如果Self
是nil
或有效的对象实例,则可以使用
function TMyClass.Clone(): TMyClass;
begin
if Self = nil then
begin
Result := nil;
Exit;
end;
Result := TMyClass.Create();
// Copy values/settings from Self to Result
end;
然后让我更简单地使用Clone()
方法:
y := x.Clone();
我对对象方法调用的编译器表示形式的理解使我认为这是可以的,但是我对此持怀疑态度,因为我找不到Embarcadero文档来说明这种事情已得到正式支持。
是否已正式支持使用nil
个对象实例的对象方法调用?