A compilation-unit defines the overall structure of a source file. A
compilation unit consists of zero or more
using-directives followed by zero or more global-attributes followed by
zero or more namespace-memberdeclarations.
compilation-unit:
using-directivesopt global-attributesopt namespace-member-declarationsopt
A C# program consists of one or more compilation units, each contained in a
separate source file. When a
C# program is compiled, all of the compilation units are processed
together. Thus, compilation units can
depend on each other, possibly in a circular fashion.
The using-directives of a compilation unit affect the global-attributes and
namespace-member-declarations
of that compilation unit, but have no effect on other compilation units.
The global-attributes (§24) of a compilation unit permit the specification
of attributes for the target
assembly. Assemblies act as physical containers for types.
The namespace-member-declarations of each compilation unit of a program
contribute members to a single
declaration space called the global namespace. [Example: For example:
File A.cs:
class A {}
File B.cs:
class B {}
The two compilation units contribute to the single global namespace, in
this case declaring two classes with
the fully qualified names A and B. Because the two compilation units
contribute to the same declaration
space, it would have been an error if each contained a declaration of a
member with the same name. end