【问题标题】:What is the difference between .Create and .Create() in Delphi?Delphi 中的 .Create 和 .Create() 有什么区别?
【发布时间】:2019-07-03 06:21:03
【问题描述】:

我正在关注 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;

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

favs := TFavorites.Create();

那么下面哪个是最正确的?

  favs := TFavorites.Create;
  favs := TFavorites.Create();

【问题讨论】:

标签: delphi code-completion


【解决方案1】:

它们都同样正确。 Object Pascal 允许您在过程或方法不需要参数时省略括号,但也允许您包含它们。由你决定。

【讨论】:

  • It's up to you which you prefer. - 除非选择一个表达式而不是另一个表达式有直接的语义含义。它们并不总是等价的。
【解决方案2】:

没有区别。 Pascal 允许任何一种语法。不需要的时候我更喜欢不带括号。

【讨论】:

  • 虽然分配给程序类型时有所不同,但括号保证调用。你不能写,f.i.,favs.OnChange := favsChange();。出于这个原因,有些人在调用时更喜欢括号。
  • 实际上,Pascal 不允许两者兼有。这是 Delphi 语言。
【解决方案3】:

它们是相同的,并且都是正确的。但是如果你使用带参数的构造函数,括号会更有帮助。

【讨论】:

  • 如果你使用带参数的构造函数,括号更有用​​”——更准确地说,括号是必需的,而不仅仅是“有用” "。
  • 哦,看来我的说话方式有点问题。跟我来,有帮助意味着您可以更快地打字。如果代码完成不生成括号,那么您将难以使用带参数的构造函数。
猜你喜欢
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 2017-07-25
  • 1970-01-01
  • 2015-07-12
  • 2020-10-01
  • 2020-11-08
  • 2017-10-22
相关资源
最近更新 更多