uses的区别 ( 积分: 100 )

  • 主题发起人 主题发起人 undo
  • 开始时间 开始时间
U

undo

Unregistered / Unconfirmed
GUEST, unregistred user!
有没那位大大可以告诉我
在单元里,两个uses的区别呢?
一个是在开头时的uses
一个是声明后的uses...两个引用有什么区别?
 
有没那位大大可以告诉我
在单元里,两个uses的区别呢?
一个是在开头时的uses
一个是声明后的uses...两个引用有什么区别?
 
头一个是表明所引用单元的类型在本单元全局可用..后一个是所引用单元的类型只能在可执行部分可用..不能在本单元的声明部分使用...;以上是类型..如是变量,则是全局与局部的区别...;
头一个uses相当于C/C++的头文件..可以引用别处定义的类型与变量...
 
同意 turtlesam 的说法,属于基础问题
 
嘻嘻两位的指导,我是个刚刚开始学习Delphi编程的菜鸟.感谢~
 
不是在声明部分用到的最好放在implementation后uses
 
A引用B,如果在interface部分引用,那么B的interface发生变化,就等于A的interface发生变化,所有usesA的单元都要重新编译。
如果在implementation引用,只需要重新编译A。
 
我认为如果程序对性能没有太大的要求的话
最好把所有需要引用的单元放到 开头时的uses里
这样省事,省得有的时候还会出现 什么变量没有定义的错误。
 
同意楼上的观点.
那样是比较省事了.
 
为了增加程序的可读性,我认为还是分开写的比较好!
 
同意 turtlesam 的说法,另外补充一点,如果两个地方都可以放的话,可以把delphi自带的单元放在interface部分,而把你自己的放在implementation.
 
同意babibean的观点。放在这里还可以避免循环引用
 
同意babibean的观点
 
之所以有两个USES,就是为了解决循环引用的问题。

至于在interface部分还是在implementation部分来引用应该取决于引用与被引用的两个UNIT的相互关系。如果A UNIT强依赖B UNIT,那么B应该放在A 的INTERFACE部分的USES里。
例如 Unit Vehicle 就强依赖 Unit Wheel,应该把 Wheel 放在Vehicle的interface 里引用。但有时候Wheel会用到Vehicle的东西,你就不可以把Vehicle放在Wheel的interface里引用了,因为这会导致循环引用。所以在DELPHI引入了第二个USES——在implementation里面的USES。
 
续沙隆巴斯的主人
如果必须在implementationg后面用uses 那么说明可能出现单元间的相互引用了 应该避免这个问题
 
一般的方式是,若unit a,b 是同一模块下,且要相互引用对方并同时都要use c,
应该在implementation a的use b b的use a,
a b的interface 中use c
 
turtlesam 的说法 很正确
 
以上看了很受用!
 
两个uses并不是完全是为解决循环引用的问题吧,照指南中所说应该主要是用以区别全局声明和局部声明,然后就是如majun5452所说了,把A,B单元中公共的代码放在C中,引用C,尽量避免两个单元相互引用,即便是放在implementation下。
 
后退
顶部