0

有时,在将开放数组传递给重载方法时,我会收到“E2251 Ambiguous 重载调用‘MyMethodName’” 。

例子:

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure Test(AArrA : array of integer); overload;
    procedure Test(AArrA : array of TObject); overload;
  end;

...

procedure TForm1.FormCreate(Sender: TObject);
begin
  Test([10, 15]);
end;

它产生以下错误:

[DCC 错误] Unit1.pas(37): E2251 对“测试”的模糊重载调用

直到现在,由于避免错误,我一直使用临时动态数组,但我觉得它不是很干净

procedure TForm1.FormCreate(Sender: TObject);
var
  Tmp : array of integer;
begin
  SetLength(Tmp, 2);
  Tmp[0] := 10;
  Tmp[1] := 15;

  Test(Tmp);
end;

有没有一种更简洁的方法可以帮助 Delphi 辨别接受开放数组参数的重载?

4

0 回答 0