Common Concepts for Development
Most aspects of programming with .NET are the same for all compatible languages, because each supported language compiler produces self-describing, managed, Microsoft intermediate language (MSIL) code. All managed MSIL code runs against the common language runtime, which provides cross-language integration, automatic memory management, cross-language exception handling, enhanced security, and a simplified model for component interaction.
The .NET Framework SDK also provides the .NET Framework class library, which is organized into a single hierarchical tree of namespaces. At the root is the System namespace, which contains objects (including predefined types, such as classes and interfaces) that can be used from any supported language. System objects, which are contained in Mscorlib.dll, are used by all applications. The .NET Framework class library also includes namespaces for abstract base classes and derived class implementations, including those for file I/O, messaging, networking, and security. You can use these classes as is or derive your own classes from them.
Runtime-based class libraries are organized into hierarchical namespaces, and namespaces are stored in portable executable (PE) files — typically DLL and EXE files. You can have several namespaces — including nested namespaces — in one PE file, and you can split a namespace across multiple PE files.
One or more PE files are combined together to create an assembly, which is a physical unit that can be deployed, version numbered, and reused. The runtime uses assemblies to locate and bind to the referenced types.
The most commonly used objects are relatively easy to locate. Objects in the System namespace and in its descendent namespaces are documented in the .NET Framework Class Library. There are several other tools for working with the included namespaces and any custom namespaces. See Appendix A: Tools for Exploring Namespaces for more information on these tools.
Since all supported languages compile to the same MSIL code and use the same runtime and .NET Framework class library, programs in each of the supported languages appear similar. In fact, the runtime specifies a set of language features, called the Common Language Specification (CLS), which includes the basic features that languages must support for interoperability. Each Hello World sample program needs only write to the console to show that the program is executing properly. Therefore, the samples use the WriteLine method of the Console class, which is located in the System namespace. When you start working with the component-based application, you will see how to create a traditional Windows graphical application.