You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi类声明中使用预定义变量或为成员变量赋初始值

解决方案

你写的在类成员定义时直接赋值的语法,可按版本和使用场景选择以下实现方式:

  • 全Delphi版本通用方案:在类的构造函数中完成成员初始化
TRoom = class(TObject)
   private
    pos: array[0..2] of integer;
    up: TRoom;
    right: TRoom;
    down: TRoom;
    left: TRoom;
    freeSlots: array[0..3] of string;
    content: string;
   public
    constructor Create; override;
   end;

constructor TRoom.Create;
begin
  inherited Create;
  freeSlots[0] := 'up';
  freeSlots[1] := 'right';
  freeSlots[2] := 'down';
  freeSlots[3] := 'left';
  // 其余需要初始化的成员变量都可在此处赋值
end;
  • Delphi 10.4 Sydney及更高版本支持字段内初始化语法,只需在字段前加var关键字即可编译通过:
TRoom = class(TObject)
   private
    pos: array[0..2] of integer;
    up: TRoom;
    right: TRoom;
    down: TRoom;
    left: TRoom;
    var freeSlots: array[0..3] of string = ('up','right','down','left');
    content: string;
   end;
  • 如果freeSlots的取值固定、所有类实例共用不需要修改,可以定义为类常量,无需额外初始化:
TRoom = class(TObject)
   private
    const freeSlots: array[0..3] of string = ('up','right','down','left');
    pos: array[0..2] of integer;
    up: TRoom;
    right: TRoom;
    down: TRoom;
    left: TRoom;
    content: string;
   end;

内容的提问来源于stack exchange,提问作者Peter Pyshnyy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:36:03