Authors: Paul and Harvey Deitel
Publisher: Prentice Hall
Audience: Intermediate programmers
Reviewer: Ian Elliot
C# is undergoing a revival since going open source. Now is a good time to learn it.
The title C# 6 for Programmers suggests that it is going to be an advanced book. It isn't particularly advanced and starts off fairly slowly. It isn't quite suitable for the beginner because it doesn't tell you about the fundamental ideas of programming, but isn't really a book designed to get you up to speed as quickly as possible. It is the sixth edition of the book with a new edition appearing each time C# has been upgraded. It more or less deals with C# in its classic .NET environment and doesn't cover newer applications such as Universal Windows Apps or .NET Core. More surprisingly it doesn't even cover WPF. This is C# used as it was when it was first introduced.
The book starts of with a look at .NET and object oriented programming in general. There is no mention of the open source aspects of C# 6 or any of the more recent developments. Chapter 2 explains how to use Visual Studio 2015 Community edition. It has lots of screen dumps and explains a great deal that should be obvious to any programmer.
The book really only gets going in Chapter 3 where a simple console program prints some lines of text. Again there is a lot of attention to using Visual Studio, but most of it is fairly obvious. At the end of the chapter there is a program that adds two numbers together.
From here we move though the standard material needed to use C# fairly quickly. Chapter 4 introduces Classes, Objects, Methods and Strings. There is a needless complication of explaining UML class diagrams - this suggests that the book is aimed at the educational market.
Chapters 5 and 6 are about control statements and here we meet every control statement that C# offers in their entirety. Mixed in with this is some consideration of types, operator precedence and of course UML. Chapter 7 explains methods in more details - static methods and different type of parameters and overloading. Also included in the chapter are the idea of local variables and stack frames and recursion.
Chapter 8 marks the start of the look at topics that are mostly outside of the basic language and are part of the .NET framework. It covers Arrays and also shows you have to draw a bar chart and shuffle cards - not things that go naturally together. On the way we find out about exception handling, and again arrays and exception handling are not obviously connected. Chapter 9 is about LINQ which is a very peripheral topic from the point of view of C# and may very well be on its way out.
Chapter 10 brings us back to more core topics with a deeper look at classes and objects. The object theme continues in the next two chapters - Inheritance and Polymorphism. This is an example based explanation of the basic ideas.
After three chapters on object oriented programming the subject returns to exception handling in Chapter 13, where we find out about the ? operator in C# 6, which can avoid you throwing an exception by dereferencing a null reference.
In Chapters 14 and 15 we have a very basic look at using Windows Forms. It explains how to use the designer and handle events and then goes through all of the controls that are available.
Chapter 16 moves back to strings and looks at some String handling methods and the difference between a String and a StringBuilder. Chapter 17 is on files and streams, 18 is about Generics and 19 and 20 return to LINQ and PLINQ and functional programming. The final chapter explains asynchronous programming and the use of async and await.
The big problem with this book is that it is a 6th edition and it needs a complete overhaul. To have two chapters on Windows Forms and none on WUA or WPF is strange. The world of C# has been turned on its head recently and this book just carries on as if .NET and Windows Forms were cutting edge. Of course, if this is what you want to know about then it is a strong point and not a weakness. I also have to say that despite the use of a formulaic approach to explaining C# 6 there are some useful asides that point out how you can go wrong. My main complaint, however, is that the book lacks a good organization with topics introduced in a strange order and with topics mixed together in overlong chapters. However, many readers will find this a useful reference and if you like Deitel books in general you will like this one.
Follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.
For more C# books see C# Books - Pick of the Shelf