我在this关于TArray<T>
和array of T
的问题中多次阅读了答案。根据我的理解,第一个的使用比后者更通用,因为对于动态数组我应该声明类似的类型......
type
TMyFlexibleArray = array of Integer;
...这是必要的(在某些情况下)因为我不能返回array of Integer
例如。相反,当然,我可以返回泛型类型。动态数组没有固定长度,并且使用SetLength过程重新分配它们的内存。 TArray是一个静态方法的泛型类;有关它的文档说明:
您不应该创建此类的实例,因为它只是 目的是提供排序和搜索静态方法。
它们具有两种不同的性质/功能但是它们具有相同的结果(例如,当作为参数传递时或者当我只需要一个灵活的容器时)?我看到TArray也有一些有用的方法。
如果我说TArray<T>
是使用泛型构建的动态数组并且type K = array of T
是一个自己的动态数组(自定义数组),那是正确的吗?在我的问题中,我假设它们在动态数组的功能上是等价的(我更喜欢通用的方式以获得舒适性)。
答案 0 :(得分:7)
通用动态数组和非通用动态数组在各方面都是相同的,除了它们的通用性或其他性质。这是唯一的区别。
这种差异推动了在少数情况下的决策制定,其中一个可以使用但不能使用另一个。例如:
如果这看起来很明显,那是因为它是。通用和非通用数组之间确实只有这一个区别。
您还提到了来自TArray
的课程System.Generics.Collections
。这是一个静态类,包含搜索和排序数组的方法。它与任何动态数组类型完全不同,并且在这里分散注意力。虽然名称相似,但TArray<T>
和TArray
这些是完全不同的东西。出于此问题的目的,请忽略TArray
。