Throughout this book, we emphasize that the C# language must be considered in parallel with the .NET Framework, rather than viewed in isolation. The C# compiler specifically targets .NET, which means that all code written in C# will always run within the .NET Framework. This has two important consequences for the C# language:
1. The architecture and methodologies of C# reflect the underlying methodologies of .NET.
2. In many cases, specific language features of C# actually depend on features of .NET, or of the .NET base classes.
Because of this dependence, it is important to gain some understanding of the architecture and methodology of .NET before you begin C# programming. That is the purpose of this chapter. The following is an outline of what this chapter covers:
- This chapter begins by explaining what happens when all code (including C#) that targets .NET is compiled and run.
- Once you have this broad overview, you take a more detailed look at the Microsoft Intermediate Language (MSIL or simply IL); the assembly language that all compiled code ends up in on .NET. In particular, you see how IL, in partnership with the Common Type System (CTS) and Common Language Specification (CLS), works to give you interoperability between languages that target .NET. This chapter also discusses where common languages (including Visual Basic and C++) fit into .NET.
- Next, you move on to examine some of the other features of .NET, including assemblies, namespaces, ...