【发布时间】:2017-05-06 05:31:30
【问题描述】:
我已多次阅读this 问题中关于TArray<T> 和array of T 的答案。据我了解,第一个的使用比后者更通用,因为对于动态数组,我应该声明一个类似...的类型
type
TMyFlexibleArray = array of Integer;
...这是必需的(在某些情况下),因为例如我无法返回 array of Integer。相反,当然,我可以返回一个泛型类型。动态数组没有固定长度,它们的内存通过 SetLength 过程重新分配。 TArray 是一个具有静态方法的泛型类;关于它的文档指出:
你不应该创建这个类的实例,因为它只是 目的是提供排序和搜索的静态方法。
它们具有两种不同的性质/功能,但它们是否具有相同的结果(例如,当作为参数传递时,或者当我只需要一个灵活的容器时)?我看到 TArray 也有一些有用的方法。
如果我说TArray<T> 是一个用泛型构建的动态数组,而type K = array of T 是一个自己的动态数组(自定义数组)是正确的吗?在我的问题中,我假设它们在作为动态数组的功能上是等价的(我更喜欢通用方式只是为了舒适)。
【问题讨论】:
-
我猜您必须在它们之间进行选择的唯一真实情况是(例如)如果您使用的是 Delphi 5,因为它根本没有泛型。在最近的版本中,您可以同时使用两者并具有相同的效果。其中一部分,我更喜欢使用 TArray
但这只是我的选择 -
我不明白你为什么在你的问题中引入System.Generics.Collections.TArray。这是一个类,不要与动态数组(通用或非通用)混淆。