Delphi是否正式支持从nil对象调用对象方法?

时间:2019-06-10 21:08:34

标签: delphi

我正在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上可以正常工作,但是如果Selfnil或有效的对象实例,则可以使用

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个对象实例的对象方法调用?

0 个答案:

没有答案