Every namespace and type has a fully qualified name which uniquely identifies the namespace or type amongst all others. The fully qualified name of a namespace or type N
is determined as follows:
N
is a member of the global namespace, its fully qualified name is N
.S.N
, where S
is the fully qualified name of the namespace or type in which N
is declared.In other words, the fully qualified name of N
is the complete hierarchical path of identifiers that lead to N
, starting from the global namespace. Because every member of a namespace or type must have a unique name, it follows that the fully qualified name of a namespace or type is always unique.
The example below shows several namespace and type declarations along with their associated fully qualified names.
class A {} // A namespace X // X { class B // X.B { class C {} // X.B.C } namespace Y // X.Y { class D {} // X.Y.D } } namespace X.Y // X.Y { class E {} // X.Y.E }