BEGIN NAMESPACE 和 END NAMESPACE 关键字对声明了一个作用域,并为该作用域内声明的所有类型添加了命名空间前缀
BEGIN NAMESPACE namespaceName
typeDeclarations
namespaceDeclarations
END NAMESPACE
namespaceName | 声明的命名空间名称。 |
typeDeclarations | 一个或多个类型声明(CLASS、STRUCTURE 等)。 |
namespaceDeclarations | 零个或多个命名空间声明。 |
在命名空间范围内声明的任何类型,其类型名称前都会加上命名空间名称。例如,在名为 “MyNamespace ”的命名空间中声明的名为 “MyClass ”的类,其类型名称为 “MyNamespace.MyClass”。
在任何命名空间范围之外声明的类型都在 “global(全局) ”或 “unnamed(未命名) ”命名空间中声明。
BEGIN NAMESPACE ... END NAMESPACE 块可以嵌套到任意深度。嵌套的命名空间名称会以包围的命名空间名称为前缀,中间用(英文)句号隔开。
同一命名空间名称可以在同一文件或不同文件中声明多次。BEGIN NAMESPACE 和 END NAMESPACE 语句不会生成任何代码,它们只会影响命名空间块中声明的任何类型的名称。
在命名空间中出现的 using 指令只在包围命名空间块和任何嵌套命名空间块中有效。
使用 Transporter 从 Visual Objects 移植到 Vulcan.NET 的代码不会被放置在任何 BEGIN NAMESPACE ... END NAMESPACE 块中,因为 Visual Objects 没有命名空间的概念。因此,传输代码中的所有类都在 global(全局)或 “unnamed(未命名) ”命名空间中,并且没有预置命名空间名称。
示例
BEGIN NAMESPACE a
CLASS one // 实际类型名称为 'a.one'
...
END CLASS
BEGIN NAMESPACE b // 命名空间的名称是 'a.b'
CLASS two // 实际类型名称为 'a.b.two'
...
END CLASS
END NAMESPACE
END NAMESPACE
CLASS three // 实际类型名称为 'three'
...
END CLASS