type TMyRecord = record Value: Integer; class operator Initialize(out Dest: TMyRecord); class operator Finalize(var Dest: TMyRecord); class operator Assign(var Dest: TMyRecord; const [ref] Src: TMyRecord); constructor create(v : Integer); end; class operator TMyRecord.Initialize(out Dest: TMyRecord); begin end; class operator TMyRecord.Finalize(var Dest: TMyRecord); begin end; class operator TMyRecord.Assign(var Dest: TMyRecord; const [ref] Src: TMyRecord); begin end; constructor TMyRecord.create(v : Integer); begin Value := v; end;
使用的时候还要
var a : TMyRecord := TMyRecord.create(1);
实际上既有constructor,又有Initialize,是有歧义的,完全可以合并。
变成如下这种方式:
class operator Initialize(out Dest: TMyRecord, 各种构造的参数);
比如
class operator Initialize(out Dest: TMyRecord, v : Integer);
使用的时候就可以非常简洁了。
var a : TMyRecord(1);