A few days ago I’ve finished reading the book “CLR via C#” by Jeffrey Richter. It’s a very deep and useful book and I highly recommend it for reading to every .NET developer. The book describes internals of Common Language Runtime, its architecture and internal algorithms, ways of interaction with managed code and Operating System, etc.
Here is the list of the most interesting topics described in the book:
- Format of Assembly, its loading and execution by CLR.
- Available deployment options, including GAC and private deployment.
- Details on working with reference and value types (The book contains most thorough and clear description of boxing and unboxing operations that I’ve ever met).
- Internal implementation of .NET exceptions and possible traps.
- Garbage Collection.
- Flexibility of Application domains.
- CLR Thread pool, asynchronous operations and synchronization constructs.
However it’s not a beginner book and it’s not the best choice for learning of C# and .NET platform. For that purpose I suggest either “C# 5.0 in a Nutshell” by Joseph Albahari and Ben Albahari or “C# 6.0 and the .NET 4.6 Framework” by Andrew Troelsen.