Delphi中.Create和.Create()有什么区别?

Mic*_*nny 4 delphi code-completion

我正在跟随Pawel Glowacki的Expert Delphi一书.在页98上,他有以下onClick事件处理程序:

procedure TFormFavJSON.btnReadDOMClick(Sender: TObject);
var
  favs: TFavorites; valRoot: TJSONValue;  objRoot: TJSONObject;
  valFavs: TJSONValue;  arrFavs: TJSONArray;
begin
  favs := TFavorites.Create;
  //
  // Several lines of code omitted
  //
  favs.Free;
end;
Run Code Online (Sandbox Code Playgroud)

但是,当我键入.Cre并使用代码完成Ctrl + Space时,IDE将使用一组空括号完成代码.

favs := TFavorites.Create();
Run Code Online (Sandbox Code Playgroud)

那么以下哪项是最正确的?

  favs := TFavorites.Create;
  favs := TFavorites.Create();
Run Code Online (Sandbox Code Playgroud)

Ken*_*ite 9

他们都是同样正确的.Object Pascal允许您在过程或方法不需要参数时省略括号,但也允许您包含它们.这取决于你喜欢的.


use*_*103 8

没有区别.Pascal允许任一语法.如果没有必要,我更喜欢没有括号.

  • 分配给程序类型时有区别,但是括号可以保证调用.你不能写,fi,`favs.OnChange:= favsChange();`.当有人因为这个原因而打电话时,有些人更喜欢括号. (7认同)
  • 实际上,Pascal不允许两者兼而有之.它是Delphi语言. (6认同)