我是否需要在记录构造函数中添加"继承"行?

Kro*_*ica 10 delphi constructor record

Modern 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;
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*nan 10

不,您不需要这样做,因为记录不支持继承,因此inherited在此上下文中是无操作.

FWIW我认为记录构造函数是一种反模式.这使得呼叫站点的读者难以区分值类型和引用类型.我个人使用名为的静态类函数New为此目的返回一个新值.你可以争论一个不同的名字是否更好,但它并不重要,只要它不是Create.