I just finished reading the MEAP version of Jon Skeet’s C# in Depth Second Edition from Manning Publishing. For those that are not familiar with Manning Early Access Program (MEAP) you can check it out here. The idea is that you can purchase a book, eBook or physical, and during the development of the book you get access to eBook drafts from the publisher. They have some great books/authors, and this gives you access to material before the book comes out. Handy if you are learning new technologies and do not want to wait.
I had not read the first edition and wanted to get caught up on some of the changes made to the framework for C# 4. The book is broken up into 4 main sections with a total of 16 chapters. The first section touches briefly on version 1 of C# and then each section builds on this foundation while introducing you changes in C# 2, 3 and 4 in the remaining sections. At the time of this writing I was not able to read Chapter 1 and Appendixes due to them not being available via the MEAP program yet, but the meat and potatoes of the book were here.
The book flows differently than some of the other development books I have read. It walks you through where the language started and builds through the different versions and the improvements made with each. In the first chapters I was coming across a decent amount of "We will discuss this in 3.4" kind of references and generally I do not like this. For me, if a topic is being touched on why not go ahead and just tell me. But Skeet did a great job of giving a brief description as to why the topic is described later and once you get to the more advanced topic it makes sense.
This book does not strike me as a good book for beginners (but it wouldn’t hurt: keep reading) due to the depth that the author takes in explaining the challenges and changes made in previous versions of the framework. It is written to expect a certain level of experience with C# and the framework. I found times that I needed to do some research to make sure I understood what was being discussed. But if you are willing to do some extracurricular digging while reading the book you will be fine at any level and find yourself rewarded with a better understanding at the end.
The best part of the book is that Skeet keeps you involved and wanting to learn more. This is done by using several examples of the concepts being taught and then building on those concepts as you learn about the next version of the language. Also the book remains engaging due to the sprinkling of humor and explaining some less-than-recommended ways of using features.
Overall I would highly recommend this book for developers looking to gain knowledge of C# 4 and also to understand some of the “why” behind how we got to the current language feature set. Using Skeet’s style of building upon previous knowledge and deconstructing features in order to explain them, I found the chapters on Dynamic Binding and Code Contracts very engaging and they helped me to better understand these concepts in C# 4. This book will be staying on my kindle for awhile to use as a reference.