Author: Mark Michaelis
Publisher: Addison Wesley; 3rd ed, 2010
Aimed at: Intermediate level programmers
Pros: An in-depth look at the C# language
Cons: Not for the complete beginner
Reviewed by: Ian Elliot
This is a really good book but you still need to be the right reader to appreciate it. It covers C# 4.0 in great depth but it uses a large font and lots of white space to make it all look approachable. The explanations are very clear and well paced but they do go into some technical detail that a beginner might find difficult.
The whole book reads like a cross between a reference work and an informal discussion of C#.The most important thing to realise is that while the descriptions are expressed in a clear style this is no dummies' book. What it describes can be quite technical and probably unsuitable for the complete beginner.
For example, right at the start it takes a look as the output of the compiler and discusses what is going on under the covers. A complete beginner would probably find this confusing and unnecessary. If you are slightly higher up the levels then the asides are great fun - informative and they give you a glimpse of what is going on and make connections to higher concepts.
It starts from the very basics - a Hello world program - and works its way through the foundations of the language - data types, flow control, methods, classes, Inheritance, Interfaces - and goes to more advanced topics such as delegates, the effect of LINQ on collection objects, reflection, PLINQ, multi-threading using the Task Parallel Library, interop and the CLI.
Each chapter starts with a map that attempts to show you how the current topic interacts with others. For me this didn't work well but it might suit others and it doesn't take much space in a book that would otherwise be mostly devoid of illustrations!.
Having said that this isn't a book for the complete beginner, it would make a good choice for any programmer making the transition from another language. There are even box-outs that compare C# to other languages to provide a contrast.
It is also important to know that it really is about C# and not about the very many associated .NET technologies. So while there is a chapter on LINQ, because this is rightly regarded as being a core C# language technology, there are no chapters on WPF, WF, WCF or even on the user interface in general. It certainly doesn't cover writing web-based applications using Silverlight or ASP .NET.
This is a book that focuses on the C# language and only strays from its core topic if it illuminates the way the language is used. This is as it should be unless you are mistakenly expecting a book on the whole of .NET. This is the one you buy to find out about C# and you will probably need to find another book to help you put this knowledge to work.
This is a very good book if you want an intermediate level almost reference work account of C#.