在 Delphi 中,
array of T
和
TArray<T>
都用于表示动态数组,但它们之间存在一些关键区别,尤其是在类型安全性和使用方式上。
array of T
:
这是 Delphi 中传统的动态数组声明方式。
它不是类型安全的,因为你可以将一种类型的动态数组赋值给另一种类型的动态数组(尽管这通常是不安全的,并且可能导致运行时错误)。
使用
SetLength
函数来分配和重新分配内存。
在较旧的 Delphi 版本中,这是创建动态数组的唯一方式。
TArray<T>
:
TArray<T>
是 Delphi 引入泛型后提供的一个动态数组类型,其中
T
是数组元素的类型。
它是类型安全的,因为泛型提供了编译时类型检查。这意味着你不能将
TArray<Integer>
赋值给
TArray<String>
,除非显式地进行类型转换(这通常是不可能的,因为它们表示完全不同的元素类型)。
TArray<T>
通常与泛型集合类一起使用,提供了更好的代码重用和更强的类型安全性。
在内部,
TArray<T>
实际上就是一个
array of T
,但编译器为其提供了额外的类型检查和可能的优化。
你可以使用
Length
函数来获取数组的长度,并且可以通过直接赋值来调整数组大小(这将自动调用
SetLength
)。
使用建议
:
如果你正在使用较新的 Delphi 版本(尤其是支持泛型的版本),建议使用
TArray<T>
,因为它提供了更好的类型安全性和更现代的编程风格。
如果你正在维护较旧的代码库或需要与不支持泛型的库互操作,则可能需要继续使用
array of T
。
使用
array of T
:
注意:在上面的
TArray<T>
示例中,我使用了动态数组初始化器,这是 Delphi 的一种语法糖,允许你更简洁地初始化动态数组。然而,这种初始化方式实际上在内部调用了
SetLength
和逐个元素的赋值操作。
本文来自博客园,作者:
del88
,转载请注明原文链接:
https://www.cnblogs.com/del88/p/18004904