检查以下代码:
function A(const points: TArray<TPoint>): Boolean;
begin
//Something
end;
procedure B(var pts: array of TPoint)
begin
A(pts); //Compiler error E2010 Incompatible types
end;
它产生编译器错误:
E2010不兼容的类型:&#39; System.TArray&#39;和TPoint&#39;
的数组致电A(TArray<>(pts));
并不起作用。我解决了这个问题
A(TArray<TPoint>(@pts));
将开放数组参数强制转换为TArray&lt;&gt ;?是否正确?还有其他办法吗?
请假设功能的参数类型不能更改。
答案 0 :(得分:3)
你不能执行这样的类型转换。开放数组不是动态数组。您的选择包括:
其中我会注意到复制很昂贵,我原则上会拒绝这个选项。