mjn*_*mjn 17 delphi oop language-features self delphi-prism
GUI应用程序中的此代码编译并运行:
procedure TForm1.Button1Click(Sender: TObject);
begin
Self := TForm1.Create(Owner);
end;
Run Code Online (Sandbox Code Playgroud)
(使用Delphi 6和2009测试)
编辑:
更新:使用Self赋值的Delphi应用程序/库:
Mas*_*ler 11
这并不像它可能那么糟糕.我刚刚在Delphi 2009中对它进行了测试,看起来,虽然Self参数不使用const语义,你似乎暗示它应该,它也不使用var语义,所以你可以改变它希望在您的方法中实际上不会丢失调用者对您的对象的引用.那将是一件非常糟糕的事情.
至于原因,两个答案之一.要么是简单的疏忽,要么是Marco建议的:允许你将Self传递给var参数.