Once in a while you come across book that you wish you had read earlier in your career but recognise that you probably would not have been able to take advantage of it without many years of experience. CLR via C# by Jeffrey Richter is one such book.
Instead of trying to teach you about a particular language this book takes you on a guided tour of the .NET Common Language Runtime (CLR) and uses the language specifics of C# to show how these concepts relate to your day to day job. If you don’t know the specifics of C# I think you’d have a hard time wrapping your head around what is going on and the author takes the time to explicitly state that a fair amount of C# (and OO design) knowledge is assumed. It’s difficult for me to say as I approach the book with many years of software development with C# behind me.
Don’t let the C# take your attention from the real matter at hand in this book though. This is a book about the CLR. In it’s pages you will learn:
- The history and goals of the .NET framework
- The individual components of an assembly. How they are signed and loaded.
- What an AppDomain is and what services it provides.
- How types are loaded and accessed at runtime
- How events and properties are implemented (this was a highlight for me)
- How generics works (do you know the difference between an open and closed type?)
- Advanced Multi-threading scenarios
- And more. Much much more
I feel as if I have learned hundreds of little bits of useful information reading this book. I can remember a few times in the past when a nugget of gold from this book could have saved me a lot of time and heartache and I can imagine a few scenarios in the future where I will be fore-armed against weird CLR edge cases.
The writing style is interesting and engaging despite the dry subject matter. The author is obviously extremely familiar with the framework and the decisions that shaped it into it’s current form. He’s also confident enough in his knowledge to call out what he feels are mistakes or areas for potential improvement. This commentary gives you a glimpse into the framework of the future or perhaps into the framework of an alternate reality.
Despite Jeffrey’s style the subject matter makes this a very dense and at times difficult to understand book. Some sections left my head spinning and required multiple readings before I was satisfied that I could move on. I don’t recommend this book for people that are just starting out in the .NET space nor do I recommend sitting down with it on a lazy Sunday afternoon and trying to read it from cover to cover. For those who’ve been in the game for a while though this book is a must. It won’t force you to make any fundamental changes to the way you write .NET software but it will help you to fine tune your understanding and turn a pretty good developer into an excellent one.
NOTE: The 2nd edition of this book (which is the one I read) is written for the 2.0 version of the CLR. Despite the fact that C# (the language) is up to version 3.0 and the .NET Framework is up to version 3.5 the CLR is still version 2.0. That means that the 2nd edition is current and a new edition is not to be expected until a new version of the CLR is released. Jeffrey addresses this issue in his own blog post.
If you are in Australia the best way to get a copy of the book is to order it online from MS-Press Australia. That way it gets shipped out of Sydney instead of from another country. They’ll even price match Amazon and if you order before 1st May you go into the running to win some stuff!
In the interests of full disclosure I was provided a free copy of this book in exchange for a review. I have not allowed that fact to influence my comments in any way. I am not affiliated with MS Press or MS Press AU and I don’t get any kind of commission for a sale.
No new comments are allowed on this post.