如何在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
相关产品推荐
相关产品推荐

