Author: John Sharp
Publisher: Microsoft Press, 2010
Aimed at: Programmers converting to C#
Pros: Easy to read
Cons: Long-winded and lacking clear explanations
Reviewed by: Ian Elliot
Is this a beginner's book or not?
This book is the update to the C# 2008 edition. It claims to be aimed at programmers wanting to learn C# but it cover things at a level that only a beginner would need. Lots of screen dumps and obvious stuff covered in painful detail and minute step-by-steps telling you what to click next. Then it moves far too quickly onto advanced topics that would leave a beginner in the dust. This is just another example of a book that claims to be aimed at the beginner but the range of topics and technicalities covered are well outside of what is relevant to a beginner.
What is more difficult to forgive is that there are no clearly stated ideas just a jumble of dos and don'ts and how things work at a superficial level. The step-by-step approach tends to obscure overall principles but if you are tedious enough to follow each step you might gain a spurious confidence that you can make it all work. What is more difficult to forgive is that when concepts are introduced they are often confusing for the expert, let alone the beginner.
For example the coverage of parameter passing doesn't make it at all clear that parameters are always by default passed by value and confuses passing mechanisms with the effect of variable type. If you read all of it carefully then eventually, and by contrast with pass by reference, it does make sense.
Equally disappointing is the explanation of boxing and unboxing which simply explains that this happens and offers no insight into why it happens in any real situations.
The up-date to cover the 2010 version of the language, i.e. C# 4.0, is spread throughout the book. For example, optional and named parameters are introduced in a new section in the original Chapter on writing methods. No indication is given that this is a new feature. It's just described as if it had always been part of the language. A new Chapter on PLINQ is quite good but what is it doing in a book for the beginner? The only explanation is that the author was interested in finding out about it. You can't help but feel that this is the reason that many of the topics have been included. It takes a certain amount of discipline to write a beginners book in that you have to confine yourself to beginners topics and this is often too boring for an author to work with.
The final verdict has to be that this is not suitable for the complete beginner. If you already know something about programming then you will follow the explanations but you will probably find them a bit slow. The later parts of the book cover some more advanced topics but these don't go far enough to suffice. In short this book doesn't really suit any given category of reader.
If you really need a step-by-step introduction to C# you might benefit from working through the book, but there are better ways of spending your time.