Book Review: C# in Depth Second Edition

Written By John Sonmez

Been staying pretty busy lately, so I haven’t been reading all that much, but I did just finish reading C# in Depth Second Edition by Jon Skeet.

skeet2_cover150

This book is basically a coverage of all the major features of the C# language that have changed since the first edition of C#.

It is a pretty long book, but it covers a pretty large topic and it does indeed cover it “in depth.”

I debated whether it was worth my time to read this book, since I already had a good grasp of most of the C# language, but I am definitely glad I did.  There are many very detailed concepts that Jon does an excellent job of explaining which make other language concepts seem much simpler.

The book is basically a forward progression through the advances of C# through each major revision.  Jon does an excellent job of presenting not just the what, but the how and whys for each language revision.

The developer that has at least a decent knowledge of the C# language will get the most out of this book, as it can get a bit tricky and complex at times.  Definitely is a book for advanced developers as well, who will most assuredly learn something about the language they didn’t know.

If you’ve watched any of my Pluralsight courses, you know that I like to teach in a very informal and conversational way, and it seems Jon Skeet also takes this approach and makes this highly technical book quite readable.

Good:

  • Very excellent and detailed coverage of language features of C#.
  • Excellent verbal illustrations to help simplify some complex topics and make them memorable.
  • Down to earth conversational approach to the material makes it a joy to read.
  • The coverage on LINQ is phenomenal.
  • Book builds in progression on previous examples and chapters very naturally.
  • It is very obvious great detail went into making and planning out this book.  Rare to see today.

Bad

  • Coverage of dynamics and DLR is a bit dry.  The topic is very complex and I felt like the book launched in a bit too fast.
  • Sometimes I felt like Jon was a bit too objective in presenting his opinion.  I generally trust the values and opinions of a skilled developer like Jon Skeet, so I would rather have his opinions be presented a bit more firmly in the book.

What I learned:

First off, a whole lot more than I would have expected.

There are many aspects to the C# language that I thought I understood fairly well, but had never turned down one dark little corridor.  This book made me turn down those corridors and face the demons there.

Specifically, I thought I understood how LINQ providers worked.  I never really looked into one, because I had an assumption about how a LINQ provider would work based on what I knew of the language.  I found out that I was wrong in my assumptions and I now have a much more thorough understanding of LINQ and how all the pieces of the language fit together to make it work.

I also learned quite a bit about dynamics and the DLR.  Although it was a bit painful, I felt like the book got me to reconsider my stance on dynamics just a bit and consider some places in the statically typed C# language where they might make sense.  (Understanding how dynamics work reduced them to the same level as any reflection based code in my mind.)

Overall, I would highly recommend this book.  My only two negatives about the book should not dissuade you from reading it.  A beginner or intermediate C# developer could easily raise both their skill level and knowledge of C# considerably just by reading this book, and any advanced C# developer should have plenty to learn from it as well.