如何调整“T 数组”的大小?

问题描述 投票:0回答:1

简化代码:

class procedure ArrayUtils.test<T>(var myArray: Array of T);
begin
  SetLength(myArray, 1);
end;

这会导致错误

E2008 Incompatible types
。显然
SetLength
不能与这样定义的数组一起使用,并且由于其他设计限制,我无法使用
TArray<T>
。那么我如何在这里调整数组的大小呢? 我不确定为什么编译器拒绝这样做,因为当使用本地
Array of T
时它编译得很好?我也尝试删除
var
,但没有运气。

编辑:我尝试的另一件事是做

myArray := myArray + [element];
。没用,同样的错误。

delphi
1个回答
1
投票

在方法签名中使用

array of X
时无法调整大小,因为它不是人们想象的动态数组,而是所谓的 开放数组参数

当您想要调整传入的动态数组的大小时,您需要使用

TArray<T>
或其他一些动态数组类型声明。

© www.soinside.com 2019 - 2024. All rights reserved.