用.NET Framework SDK附带的ILDASM工具打开HelloWorld.exe文件, 可以看到有两个名字空间Borland.Delphi.System和HelloWorld存在, 而MANIFEST里面是配件(Assembly)一级信息,详细含义请参加笔者另一系列文章 《MS.Net CLR扩展PE结构分析》,里面有详细解析。(.NET是M$的.NET架构的名称, 在实现一级其程序运行在CLR Common Language Runtime的环境中,类似Java中 虚拟机VM的概念,因此下文中对实现一级不再以.NET而以CLR称呼) 与Delphi一样,Delphi.NET自动引用System单元的内容,只不过单元名称 变成了Borland.Delphi.System而已。这是Object Pascal增加的语言特性之一 ——命名空间(namespace),用于将类定义隔离在不同作用域中,以避免名字冲突。 而HelloWorld命名空间则是根据项目或单元名称自动生成的,实际代码一般保存在此 命名空间的类中。
我们先来看看代码所在的HelloWorld名字空间
.namespace HelloWorld { .class /*0200000B*/ public auto ansi Unit extends [mscorlib/* 23000001 */]System.Object/* 01000001 */ { ... } // end of class Unit