使用开放数组参数时,如何避免“E2251对'MyMethodName'的不明确重载调用”?

时间:2018-03-19 16:42:05

标签: delphi overloading delphi-2007 open-array-parameters

当将开放数组传递给重载方法时,有时会得到“E2251不明确的重载调用'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识别接受开放数组参数的重载?

0 个答案:

没有答案