为什么在Delphi中可以自行分配?

前端之家收集整理的这篇文章主要介绍了为什么在Delphi中可以自行分配?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
GUI应用程序中的此代码编译并运行:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Self := TForm1.Create(Owner);
end;

(用德尔福6和2009测试)

为什么是自写而不是只读?
>在哪种情况下这可能是有用的?

编辑:

>这是否也可能在Delphi棱镜? (我想是的,见here)

更新:
Delphi应用程序/使用自我分配的库:

> python4delphi

解决方法

这没有那么糟糕。我只是在Delphi 2009中测试过,并且看起来,虽然Self参数不使用const语义,但是您似乎暗示它应该是它也不会使用var语义,所以你可以改变它想要在你的方法中,而不会丢失调用者对你的对象的引用。这将是一件非常糟糕的事情。

至于为什么,两个答案之一。要么是一个简单的监督,要么是Marco建议的:允许你将自己传递给一个var参数。

猜你在找的Delphi相关文章