1

是否可以使用开放数组作为索引属性的索引类型?

unit OpenArrayAsPropertyIndex;

interface

type

  TFoo = class
  private
    function getBar(Index: array of Integer): String;
  public
    // [DCC Error]: E2008 Incompatible types
    property Bar[Index: array of Integer]: String read getBar;
  end;

implementation

function TFoo.getBar(Index: array of Integer): String;
begin

end;

end.

属性 getter 是通过在 IDE 中按 Ctl+Shift+C 生成的,但此代码无法编译并给出错误“E2008 不兼容类型”。那么,这是语言限制,还是 getter 的正确参数签名是什么?

4

1 回答 1

1

而不是array of Integer使用System.Types或类似的自声明类型TIntegerDynArray

type
  TIntArray = array of Integer;
  TFoo = class
  private
    function getBar(Index: TIntArray): String;
  public
    property Bar[Index: TIntArray]: String read getBar;
  end;

function TFoo.getBar(Index: TIntArray): String;
begin

end;
于 2021-12-15T13:57:52.373 回答