Every name defined in a given scope must be unique within that scope.
A namespace is a scope.
A namespace definition begins with the keyword namespace followed by the namespace name.
the name of a namespace must be unique within the scope in which the namespace is defined.
Namespaces may be defined at global scope or inside another namespace.
Namespaces may not be defined inside a function or a class.
A namespace scope does not end with a semicolon.
The entities defined in a namespace are called namespace members.
each name in a namespace must refer to a unique entity within that namespace.
Code outside the namespace must indicate the namespace in which the name is defined
we can write a using declaration to obtain direct access to names we know we'll use frequently
a namespace can be defined in several parts.
A namespace is made up of the sum of its separately defined parts
The separate parts of a namespace can be spread over multiple files.
Writing a namespace definition either defines a new namespace or adds to an existing one.
An unnamed namespace may be discontiguous within a given file but does not span files.
Variables defined in an unnamed namespace are created when the program is started and exist until the program ends.