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分类目录,贴了, 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

你必须启用JavaScript