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.
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.