我是否需要将 "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
.
就没关系了
现代 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
.