Delphi中2D数组的索引运算符属性

Zul*_*kas 2 arrays delphi

我知道在Delphi中,当你想允许使用索引运算符[]时,你必须做类似的事情,

property Item[index: integer]: integer read GetData; default;
Run Code Online (Sandbox Code Playgroud)

如何在Delphi中实现多维数组,以便允许使用如下内容:

matrix := TMatrix<integer>.Create(3,3);
matrix[0][2] := 5;
WriteLn(matrix[0][2]);
Run Code Online (Sandbox Code Playgroud)

Rem*_*eau 7

你不能那样用[][].但您可以在单个属性中声明多个索引,例如:

type
  TMatrix<T> = class
  private
    function GetData(index1, index2: Integer): T;
    procedure SetData(index1, index2: Integer; value: T);
  public
    constructor Create(dim1, dim2: Integer);
    property Item[index1, index2: Integer]: T read GetData write SetData; default;
  end;
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

matrix := TMatrix<integer>.Create(3,3);
matrix[0, 2] := 5;
WriteLn(matrix[0, 2]);
Run Code Online (Sandbox Code Playgroud)