Delphi Managed Record的一个不方便的地方


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);

此条目发表在Delphi分类目录,贴了, 标签。将固定链接加入收藏夹。