我注意到在 Delphi 7 中,像 Point
/Rect
/Bounds
(等)这样的函数都是在 中声明和实现的类
和系统类型
单元。
这有什么原因吗?对于较新的 Delphi 版本也是如此吗?
(我的猜测是,可以在需要时使用 Types
单元来避免 Classes
开销)
最佳答案
在旧版本中,这些类型和函数是在类
中声明的。随着 RTL 的开发,特别是为了支持跨平台,这些类型变得可用于不包含类的单元。
引入了Types
单元来实现这一点。 Types
单元没有 uses
依赖项,因此可以安全地被任何其他单元使用,无论级别有多低。
主声明已移至 Types
,并且 Classes
重新导出这些类型和函数,以便从 Classes
导入的现有代码受益>。例如,SysUtils
使用Types
,但不允许使用Classes
。将这些类型和函数移动到像 Types
这样的无依赖单元可以实现这一点。
这一改变是在Delphi 5和Delphi 6之间进行的,这是Delphi跨平台开发的开始。当时是Kylix,但RTL的重组有利于 future 跨平台的发展,尽管Kylix被放弃了。
关于delphi - 为什么像 "Point"/"Rect"/"Bounds"(等)这样的函数同时在类和类型单元中声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47690521/