6

如果我将一个单元放在一个单元的实现部分的使用子句中,则在该单元中声明的标识符对接口部分不可用。

这样做并且不能在界面中使用来自引用单元的标识符有什么好处?

如果您费心在实现部分添加使用的单元而不是简单地在接口部分添加,是否有任何实际优势(例如避免不必要的副作用)?

4

2 回答 2

13

将一个单元添加到uses该部分的子句implementation允许该单元仅对.implementation而不是interface. 如果 UnitA 使用了 UnitB,但 UnitA 之外没有人关心 UnitA 是否使用 UnitB,因为 UnitA 的接口没有使用 UnitB,那么为什么要宣传依赖关系和混乱interface呢?此外,如果您需要删除 UnitB 和/或用其他东西替换它,在uses本节的子句中声明它implementation可以避免interface影响任何使用 UnitA 的单元的更改。

于 2013-08-02T17:51:15.900 回答
5

最大的问题是在接口部分使用会导致循环依赖和编译失败。如果单元 A 在接口部分使用单元 B,则单元 B 不能在其接口部分使用单元 A。

因此,您经常被迫将至少一些用途放入实施部分。

否则,如果可能的话,我个人更喜欢将单元使用放入接口部分。主要原因是范围界定和隐藏之一。如果存在名称范围冲突(两个单元定义了相同的名称,而第二个使用隐藏了第一个),那么整个单元的范围内都是相同的名称。

于 2013-08-02T16:23:52.603 回答