on 6 April 2010
Jeffery Richter has given me solid help ever since "Advanced Windows" hit the shelves. Most professional developers have several key references they use regularly and I certainly think that CLR via C# will become one of them.
There are two key camps in professional development: those who use the tools and those who understand the tools and the tooling concepts. CLR via C# succeeds in the latter by helping developers understand the code they write, the consequences that will occur and how to mitigate their current coding habits.
With topics wide ranging from how the execution of .NET applications is achieved through to AppDomains and assembly loading, anybody producing quality performant applications needs to read this book.
The book is split into five main areas: CLR Basics, Designing Types, Essential Types, CLR Facilities, and Threading.
Especially good is the section on threading, in my experience most developers do not understand threading sufficiently to produce solid reliable applications and Jeffery's book will help them avoid making key mistakes with threading.
As with any developer text, there are some personal preferences of the author which shine through, some of which you will agree with and some not, but all the advice is good.
CLR via C# is solid and well written as you could wish for from such an expert in their field.
on 8 September 2011
I have been doing C# for five years and I thought I knew it all, and boy I was wrong. This is by far one of the most intense reading about C# (definitely for total beginners), it will take your knowledge of C# from a "user" level to someone who really knows what goes under the hood, for me personally, it opened new doors in terms of how I code.
.NET makes it far too easy to start developing applications without real in-depth knowledge, the entry barrier is much much lower than C++ (and dare I say Java), this comes with a drawback. The average programmer - like me - knows much less than the average programmer in those other languages. This book helps you take a step to separate yourself from the average knowledge. It goes into deep details of what goes in the CLR, the IL produced when you write code, performance issues, new constructs in C#4 etc... The result is a huge mindset shift, you don't simply write code that works but you actually think about how is it compiled and JITed, and you start thinking of using tools like the disassembler for the first time! Highly recommended.
on 1 May 2012
I sadly made the assumption that Jeffrey Richter (JR) would be writing about the CLR in such low level, that this book would be more use to a device driver programmer, than a generic .NET developer. I saw 'CLR' and thought "oh-god - a book dedicated to MSIL (with C# code examples)" - I WAS VERY VERY WRONG!
There isn't a single book I have read on the subject of .NET that comes close to explaining how it really-really! does work.
When working with C# for a couple of years, having no C or C++ background, you start asking questions like
- What is the CLR?
- How does the Garbage Collector work?
- Why should I declare classes as virtual?
- Whats the actual difference between declaring something static, and assigning it in a static constructor?
- What are the best practices for locking and multi-threading?
- Is an array of value types (like int) a value type, or a reference type?
Ok - you may have not asked these questions, but I certainly had! With the vastness of material on the internet, conflicting opinions on Google vs the wealth of information on MSDN, I certainly found it very difficult to nail down an exact explanation in sufficient detail to keep me happy. Whats more, it left me asking more questions, doing more research and again, finding that the detail on the Internet is overwhelming.
What CLR via C# does do is give you an in-depth explanation of why C# is the way it is. It takes you through the components of the language and explains the semantics around why it is implemented in a particular way. But it isn't just a regurgitation of the CLS (Common Language Specification). This book explains WHY it is that way.
Since reading this book, I have become extremely confident in my approach to development practices. Naively, I always assigned variables to null, just to "free up space more quickly" - that doesn't happen. I pre-maturely optimised code - no need. I called GC.Collect() when I wanted more memory, because I wanted it! Bad idea. But I also learned about correct usage of constructs, which is something I was still unsure about.
I also want to emphasise JR isn't bowing at Microsoft's knees and praising every single features implemented. He does have his reservations on certain features of the language and has good reasoning behind doing it a different way.
Finally, although this book does go into the depths of the C# language, it isn't inaccessible as a general read. Each chapter covers a completely different feature of the language, so it has been easy to skip back and forward between chapters. The book is well cross-referenced should you need to revisit a chapter to improve your understanding.
I would like to also convey that this book has changed my understanding of C#, cleared up bad assumptions made and also gave a central resource for me to go back to again and again.
I have also e-mailed the author a few times and he has been extremely helpful and thorough in answering my questions.
on 27 January 2014
In this book, Jeffrey Richter unpeels the CLR like an onion to reveal details that are strangely useful. I found it to be a fascinating read, but thought it all might be a bit academic - until I suddenly realised how much it helped me to understand what was actually going on under-the-hood.
The book was recommended to me after I read C# in Depth and I congratulate James Lanng as this is a perfect next stage in your C# reading list!
on 17 January 2011
Normally, a programming language book tells you WHAT. Sometimes, a good programming language book, e.g. Effective Java, tells you HOW. While telling you WHAT and HOW, this book also tells you WHY.
on 28 December 2010
There is not much to add to what other reviewers have already said. This is an excellent book for those with some experience wanting to know in-depth details about how the CLR works, using C# as a tool. Because of this, it's neither a book for programming newbies or those who just want their first introduction to .NET and C#.
The third edition has been updated to include .NET 4.0, specially on the chapters dealing with concurrency.
Get this book if you're already familiar with the .NET framework and C# and want to expand your knowledge on advanced topics, you won't be disappointed.
on 14 January 2013
This is one of the best books about C# and CLR I every read; it gives you a very good and clair inside of how the CLR handles the code (C#). It's not a book for beginners, but if you want to know how the CLR (computer) handles code and how you can improve your code regarding the working of the CLR, it's a must. It's a book you can read over and over again; each time you understanding will grow.