gpt4 book ai didi

delphi - delphi中初始化对象

转载 作者:行者123 更新时间:2023-12-02 06:21:20 24 4
gpt4 key购买 nike

如您所知,在 C# 中初始化对象非常方便且快速

    StudentName student2 = new StudentName
{
FirstName = "Craig",
LastName = "Playstead",
};

List<MyObject>.Add(new MyObject{a=1,b=2})

是否可以像这样在Delphi中初始化对象?

最佳答案

正如其他人所指出的,没有像 C# 中那样的对象初始值设定项语法。

有一些接近的替代方案。

  1. ja-mesa已经指出了 with 构造,尽管最好避免这种构造。你可以看我的blog对使用 with 以及其他语言和一些替代方案中的类似结构的利弊进行(大部分)公正的审查。
  2. 可以使用匿名方法来实现此目的,尽管它们有点冗长且有点难看:

    TMyObject.Create(procedure(var  FirstName, LastName: string)
    begin
    FirstName := 'Craig';
    LastName := 'Playstead';
    end);
  3. 流畅的界面可以非常接近于此:

    TMyObject.Create
    .FirstName('Craig')
    .LastName('Playstead');

    缺点是编写流畅的接口(interface)非常耗时,并且只有当您计划大量使用此类或正在编写公共(public) api 时才会有返回。

  4. 持续记录也非常接近。

    const
    MyRecord: TMyRecord =
    (
    FirstName : 'Craig';
    LastName : 'Playstead';
    );

    明显的缺点是它是一个常数

  5. 另一个解决方案是重载构造函数:

    TMyObject.Create('Craig', 'Playstead');

当然,您可以通过简单地创建一个具有单个字符名称的临时变量来完成同样的事情。

var
o: TMyObject;

begin
o := TMyObject.Create;
o.FirstName := 'Craig';
o.LastName := 'Playstead';
Result := o;
end;

关于delphi - delphi中初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17770883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com