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;
我的问题是 - 我是否需要在记录构造函数中添加inherited
行?为什么?
答案 0 :(得分:10)
不,你不需要这样做,因为记录不支持继承,所以inherited
在这种情况下是无操作的。
FWIW我认为记录构造函数是反模式。这使得呼叫站点的读者难以区分值类型和引用类型。我个人使用名为New
的静态类函数为此目的返回一个新值。你可以争论一个不同的名字是否更好,但它并不重要,因为它不是Create
。