CHAPTER 1 THE PHILOSOPHY OF .NET
Figure 1-4. mscoree.dll in action
The Assembly/Namespace/Type Distinction
Each of us understands the importance of code libraries. The point of framework libraries is to give
developers a well-defined set of existing code to leverage in their applications. However, the C# language
does not come with a language-specific code library. Rather, C# developers leverage the languageneutral .NET libraries. To keep all the types within the base class libraries well organized, the .NET
platform makes extensive use of the namespace concept.
A namespace is a grouping of semantically related types contained in an assembly or possibly
spread across multiple related assemblies. For example, the System.IO namespace contains file I/Orelated types, the System.Data namespace defines basic database types, and so on. It is very important to
point out that a single assembly (such as mscorlib.dll) can contain any number of namespaces, each of
which can contain any number of types.
To clarify, Figure 1-5 shows a screenshot of the Visual Studio Object Browser utility. This tool allows
you to examine the assemblies referenced by your current project, the namespaces within a particular
assembly, the types within a given namespace, and the members of a specific type. Note that the
22