When you dig into it, at the heart of Microsoft.NET is the Common Language Runtime (CLR). The .NET Framework is more than just a layer over the old Win32 API. In fact, in a way, it is its own operating system. It has its own security system, its own memory manager, its own error handling, and much, much more.
The goal of CLR Via C# is to explain all of these topics and show how to develop applications and reusable classes for the .NET Framework through the use of the CLR. Within the pages of this book you will learn how the CLR works and the facilities that it offers. This book is 896 pages divided into 29 chapters and five Parts.
Part I, "CLR Basics," begins by explaining the CLR 's execution model, how it works and how to execute it. This includes the native code generator, the framework class library, the common type system, and the common language specification.
Then you move on to building, packaging, deploying, and administering applications and types where you will see how to combine modules to form an assembly and perform simple deployment. You will also explore shared assemblies and strongly named assemblies.
Part II, "Designing Types," starts off by looking at the fundamentals of working with types, type safety, namespaces, and assemblies. This includes the minimum set of behaviors that a type can have. Then you will learn about primitives, reference, and value types.
After that it is on to the design of types by using the different kinds of members that can be designed within a type. Here you will explore topics such as constants and fields, methods, parameters, properties, and events. You will also explore generics and interfaces as well. These are all described in detail.
Part III, "Essential Types," now moves on to explaining the mechanics of working with characters and strings in the Microsoft.NET framework and then looks at enumerated types and arrays. Although these are common constructs, there are ways that the CLR and Framework Class Library (FCL) work together to offer new features.
Subsequently it is on to callback functions through the use of delegates and how these offer more functionality than what is available in unmanaged systems. You will see how custom attributes let information to be defined and applied to almost any metadata table entry, and how, even though it may be one of the weakest areas of the CLR, you still need to know what an error is and how to handle it.
Part IV, "Core Facilities," starts off with looking at garbage collection and how automatic memory management uses it especially in relation to performance issues that are related to it. Then it is on to CLR Hosting which allows any application to utilize the features of the CLR, and how AppDomains can manage third-party code that may be running inside your processes.
Next you will see how to discover information about types, creating instances of them, and accessing their members even when you didn't know anything about them at compile time. Finally, through serialization you will see how you can convert an object into a stream of bytes, and with deserialization, put them back together again.
Part V, "Threading," will introduce the basic concept of working with threads, how threads work within the CLR, and why you will want to use them in your development. Then you will work with compute-bound Asynchronous operations, and I/O bound Asynchronous operations.
After that you will see how to use thread synchronization to prevent corruption when multiple threads access shared data at the same time. Finally you will finish up with seeing how hybrid constructs are built from the various primitive constructs as well as looking at the various hybrid constructs that ship with the FCL.
CLR Via C# is not a book for everyone especially if you are just starting out with .NET or one of the .NET languages. On the other hand, if you are the kind of developer who has a handle on .NET programming and now wants to get their hands dirty working under the hood, CLR Via C# is exactly the kind of book for you.
There is so much information contained in CLR Via C# that you will really not find elsewhere and explained so well. In addition, discussions are frequent concerning the reasons why the CLR was designed the way it was, with mention of many tips, tricks, and explanations of better ways to accomplish tasks.
When you add to the fact that CLR Via C# is very well written, and even the toughest concepts are explained as easily as the topic will allow, and that this is a third edition that keeps getting better, I have to very highly recommend this book.