Author: Scott Dorman
Aimed at: Difficult to say
Pros: Some useful info and advice
Cons: Too fast paced for beginner, too shallow for expert
Reviewed by: Mike James
This is a new version by a new author of the Visual C# in 24 hours book, not just an upgrade of the 2008 version.
The first thing to say is that this book claims not to be for complete beginners. You need to have some idea how to program before starting to learn C# in 24 hours. Even so the book starts out slowly enough with an overview of the .NET system and C# in particular. However, it fairly quickly ramps up the pace and quickly starts to read like a manual rather than an introductory text. The writing style is also suitable for the advanced reader. For example on page 20, i.e. very early in the book, we have:
Scope can be thought of as a container in which it is legal to refer to a variable with its unqualified name... A variable is guaranteed to be alive at least as long as the scope is executing.
Well I don't think about scope as something that is executing and a simpler and more user-friendly explanation of what scope is all about should be possible. Equally you could ask if we really need to tackle the subject of scope as early as page 20? Yet straight after some fairly technical discussion we have a handholding step-by-step look at using Visual Studio complete with lots of screen dumps - is this supposed to be for the same reader?
The book then quickly forgets the slow pace of the screen dumped based introduction to VS and starts to ramp up the pace. In hour 2 we look at Type, then classes, inheritance, enumerated types and structures and events.
This brings us to Part II of the book "Programming in C#" Why we need a new section is quite obvious as we go back to looking at some basics - hour 7 program flow, then strings and regular expressions, arrays and collections, errors and exceptions, generic and finally LINQ. What binds this selection together is difficult to see and why particular ideas are introduced when they are is also difficult to fathom. For example why introduce strings and easy and very vital topic along with regular expressions which are difficult and can be left until they are needed. Why put arrays together with collections and so on. And why end the section on LINQ when the next section is on working with data?
Part III is all about working with data but moves back down the level to first deal with files, then up to XML, and up to ADO .NET and LINQ. Part IV is intended as an integration of all that has gone before and is about building applications. Hour 16 deals with debugging, then on to WPF, data binding, and ASP .NET.
Finally Part V is called Digging Deeper and if you are anything like a beginner you will wonder how much deeper you can go. In this section we have some fairly advanced topics, attributes, dynamic types, garbage collection, threads, concurrency and PLINQ and finally Silverlight, Powershell and the Entity Framework. All dealt with at the most superficial level and with little real explanation or examples. You have to ask that question of why bother to introduce such advanced topics at such breakneck speeds?
Overall it is difficult to see who this particular volume is aimed at. It has some good snippets of information and bits of advice that ring true but basically it covers too much ground in too little space and even if you could get though it all in 24 hours you would be little better of than before you started. If you are beginner then this is too advanced and too arbitrary in the order of presentation and level. If you know another language you might cope with some of the material but again its an arbitrary order that moves up and down the difficulty level. Finally if you are an expert then you presumably should know most of this stuff and at best it is going to be a refresher. It's simply too shallow a treatment to be useful in this case.
It's not a truly terrible book but I can't see who exactly to recommend it to - unless of course you recognise your own particular set of requirements in the outline of the book.