有时,在将开放数组传递给重载方法时,我会收到“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 辨别接受开放数组参数的重载?