3

在旧的 Delphi 版本(ANSI 字符串)中,ShortStrings:

var Str: String[30];

可用于降低内存成本并且仍然具有 ANSI 编码。

在当前的 Unicode 版本中,ShortString 是否像上面一样,别名为某些 Unicode 编码版本?
这种做法的优势是否仍然存在以降低内存成本?

4

1 回答 1

5

Delphi 短字符串始终使用 ANSI 编码,即使在现代 Unicode 感知的 Delphi 版本中也是如此。它们被认为是一种遗留数据类型,因此 Embarcadero 在引入 Unicode 时选择不进行更改。

对于它的价值,使用短字符串并不一定会降低内存成本。只有当你的字符串都接近相同的长度时,它才会这样做。如果您的字符串在长度上有任何显着变化,那么使用动态(又名长)字符串将导致较低的内存开销。

我不认为短字符串比动态字符串更好。它们的存在仅仅是因为它们早于动态字符串。如果首先发明了动态字符串,那么短字符串将不存在。事实上,它们在新的移动编译器中并不存在。换句话说,只使用动态字符串。

于 2013-11-01T12:12:54.403 回答