首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

uses放在interface后面或放在implementation后面,有什么区别吗?解决方案

2012-02-26 
uses放在interface后面或放在implementation后面,有什么区别吗?按教程上的方法做一个最简单的Com服务器程

uses放在interface后面或放在implementation后面,有什么区别吗?
按教程上的方法做一个最简单的Com服务器程序,发现自动生成程序如下:
interface

uses
    ComObj,   ActiveX,   AutoSrv_TLB,   StdVcl,   Unit1;

type
    TMyAutoSrv   =   class(TAutoObject,   IMyAutoSrv)
    protected
        function   Get_Caption:   WideString;   safecall;
        procedure   Set_Caption(const   Value:   WideString);   safecall;
        procedure   SetColor(AColor:   OLE_COLOR);   safecall;
        procedure   SetEditText(const   AText:   WideString);   safecall;

    end;

implementation

uses   ComServ;

奇怪的是uses   ComServ;被放在了Implementation部分,而ComServ.pas和Windows.pas一样,都是Delphi自带的文件。

这个有什么原因在里面吗?



[解决办法]
就使用来看 我觉得区别不大
放在一起,一样可以编译.

具体原因说不上来.
看楼下的
[解决办法]
implementation
uses ComServ; //相当是局部的声明

估计有“循环引用”的问题,所以没有放在头部声明。


[解决办法]
至少有两个区别:
1.如果你在定义域用到了你要use的单元,那么就要放在上面,不然编译不了。
2.放在下面,编译的时候不会去编译你use的单元中use的单元,放在上面则在编译use的单元时,会编译你use的单元中use的单元。所以放在下面不会造成循环引用的问题。
[解决办法]
接口是暴露给调用者的;
实现是供自己引用的;
当然有区别了。

热点排行