我是否需要将 "inherited" 行添加到记录构造函数中?

Do I need to add "inherited" line into record constructors?

现代 Delphi 允许记录的构造函数。我有以下代码:

{ TKMRect }
constructor TKMRect.Create(aPoint: TKMPoint);
begin
  inherited; // <<- Do I need to add this line ?

  Left := aPoint.X;
  Top := aPoint.Y;
  Right := aPoint.X;
  Bottom := aPoint.Y;
end;

我的问题是 - 我需要在我的记录构造函数中添加 inherited 行吗?为什么?

不,您不需要这样做,因为记录不支持继承,因此 inherited 在这种情况下是一个空操作。

FWIW 我认为记录构造函数是一种反模式。这使得调用站点的 reader 很难区分值类型和引用类型。为此,我个人使用名为 New 的静态 class 函数,即 return 的新值。你可以争论不同的名字是否更好,但只要不是 Create.

就没关系了