【发布时间】:2011-08-25 21:25:33
【问题描述】:
我正在阅读 Delphi XE 中的 RAD Studio 文档。 这里有一些文字。
[ Delphi 参考 -> Delphi 语言指南 -> 程序和单元 -> 使用命名空间 -> 搜索命名空间 -> 多单元命名空间]
多单元命名空间
如果单元声明引用同一个命名空间,则多个单元可以属于同一个命名空间。 例如,可以使用以下单元声明创建两个文件 unit1.pas 和 unit2.pas:
// in file 'unit1.pas'
unit MyCompany.ProjectX.ProgramY.Unit1
// in file 'unit2.pas'
unit MyCompany.ProjectX.ProgramY.Unit2
在此示例中,命名空间 MyCompany.ProjectX.ProgramY 在逻辑上包含来自 unit1.pas 和 unit2.pas 的所有接口符号。
命名空间中的符号名称在命名空间中的所有单元中必须是唯一的。
在上面的例子中,Unit1 和 Unit2 都定义一个名为 mySymbol 的全局接口符号是错误的
我对此进行了测试。 代码如下。
-----------------------------------------------------------------
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Lib.A in 'Lib.A.pas',
Lib.B in 'Lib.B.pas';
begin
WriteLn ( TestValue ) ;
ReadLn ;
end.
-----------------------------------------------------------------
unit Lib.A;
interface
const TestValue : Integer = 10 ;
implementation
end.
-----------------------------------------------------------------
unit Lib.B;
interface
const TestValue : Integer = 10 ;
implementation
end.
这不是错误。为什么?我不明白。
【问题讨论】:
-
如果你只
uses SysUtils, LibinProject1并在Lib.B中执行TestValue: Integer = 20然后在Project1中执行WriteLn(TestValue)会发生什么? -
我想 Codegear 有一些不规则的计划,在 Delphi for Win32 上扩展 .Net 命名空间概念,这些计划从未实施过。 Delphi 中哪里没有多单元命名空间,很难说上面的文档是关于什么的。
标签: delphi namespaces delphi-xe