Book review – C# in Depth, 2nd edition

Note, that this is a review of very early MEAP release – this is not complete book, and I review only 2 chapters that are available at the time of this writing.

skeet2_cover150[1]

If you are at least a casual user of StackOverflow you know who Jon Skeet is. Jon has a hard earned reputation of being an expert in just about anything he touches, so it came as no surprise that first edition of his C# in Depth book was universally praised for its high quality.

Fast forward almost 2 years later, we’re awaiting new version of .NET framework, along with its tools (Visual Studio) and what’s more important – new version of C# language. So while some of us are cheering for the new features and scenarios that new improvements enable we’re all faced with a task of upgrading our knowledge with this information. Here’s where Jon comes to the rescue with second edition of the book.

So far two chapters are available, both covering new additions to C# 4.0. “Minor changes to simplify code” talks about optional parameters, named arguments, COM improvements and generic variance. “Dynamic binding in a static language” is all about the dynamic keyword and all the things around it. The whole book however is going to talk about improvements introduced in earlier versions as well, and how they fit together in the grand scheme of things.

This is a language book, and language books tend to be either focused on a newcomer to the language, or try to satisfy both newcomers as well as people with experience which results in tomes of monstrous sizes. If you’re concerned that this is the case with this book – rest assured. This book is “lean and mean” – it does not waste your time explaining basic principles that would make you yawn or skip pages. It’s also very focused and concentrated on getting you up to speed with new features. It is really very well balanced in that it spends just enough time for you to grasp the feature, and then move on to the next one.  The only place where I felt lost was generic variance and higher order functions, but this is very convoluted stuff, so it’s not a downside by any means.

The book not only describes features from a bystander’s perspective, but is full of opinions and tips about them, which is arguably the best aspect of this book, and something that differentiate it from MSDN documentation or language specification.

That’s the great value of this book – it’s incredibly well written, and after you’ve read it, you feel like you not only know what the new features are – you also feel like you know how to put them into good use, how they work under the cover, what are their limitations, and how you might go about overcoming few of them. If you’re looking for a quick way of getting up to speed with C#’s fast progress, search no more – this is the book for you. Highly recommended.