Author: Andrew Troelsen
Publisher: Apress, 6th Ed
Audience: C# programmers, novice to expert
Reviewed by: Alex Armstrong
To reach a 6th Edition a book obviously has a good pedigree. It also raises the question, What's New?
A better question in the case of this book is, how is it different from the previous edition? The book has actually shrunk in number of pages and although it has exactly the same number of chapters they are now arranged in eight sections rather than the previous seven.
Let's account for the missing pages first. The previous edition had two appendixes, a 50-page one on Windows Forms and some 20 pages on Platform-Independent .NET Development with Mono. This material already had the status of something that didn't fit within the main body of the text and it's unlikely to be missed.
Looking at the revised structure, Troelsen has grouped four of the pre-existing chapters:
- Understanding Encapsulation
- Understanding Inheritance and Polymorphism
- Understanding Structured Exception Handling
- Working with Interfaces
into a new Part III Object-Oriented Programming with C# but with very few changes to their content.
Two of the chapters in Part IV: Advanced C# Programming have seen extensive changes. Chapter 9: Collections and Generics now opens with an additional section explaining "the motivation of Collection classes" which looks at the System.Collections namespace. Chapter 11: Advanced C# Language Features has been slimmed down. For example, it no longer covers methods using the partial keyword. This seems a sensible simplification as this was never widely used.
Part V: Programming with .NET Assemblies and while its opening Chapter 14 has been re-tittled to "Building and Configuring Class Libraries" but otherwise has only a few changes. The rest of this part is virtually unchanged.
If you are looking for new inclusions, C# 5.0 introduced the async and await keywords and these are duly covered in Chapter 19: Multithreaded, Parallel, and Async Programming, which is at the start of Part VI: Introducing the .NET Base Class Libraries.
This encyclopedia tome isn't just on C# its also about the .NET Framework and another major new sections are in the chapter on Windows Workflow where there's a extended project to create an Activity Library. On the other hand the section of the book on Windows Presentation Foundation (Part VII) has been slimmed down by removing a project. The final part of the book is still on ASP.NET Web Forms and is pretty much unchanged.
Having examined the differences from the previous version what else do you need to know about this book?
While this isn't suitable for the complete beginner to programming it would make a good tutorial text for the novice C# programmer willing to learn the ideas and not just the how-tos.
Having covered the basics it goes into some esoteric topics concerned with deployment and packaging including cross-language programming, reflection and so on. It then explores CIL (Common Intermediate Language) and using the assembler and the disassembler; the .NET dynamic language runtime, threading and parallel programming using PLINQ. There are number of chapters on database both traditional ADO style and entity framework style, plus introductions to WCF (Windows Communication Foundation), WF (Windows Workflow Foundation and WPF (Windows Presentation Foundation). The final part of the book deals with ASP .NET and related web technologies and, given the size of the subject, provides a good introduction. These chapters are aimed at the expert C# programmer who isn't so expert at the technologies being discussed.
Troelsen has a tendency to explain things via examples rather than principles but as the examples are all fairly short and understandable this works quite well, especially as the source code for the book is available online and there are pointers to it included where appropriate.
This book's revised structure is an improvement but if you already have a copy of the previous edition, and it hasn't self-destructed due to the difficulties of handling such a huge tome, there's not enough new material to merit a new outlay.
If you don't own the previous edition, the summing up from our previous review still holds:
This is an encyclopedia of .NET from the point of view of C#. It is a genuinely useful book, if hampered by its physical size. The account is orthodox in the sense that what happens when things go wrong or creative use of the technology aren't really covered. It presents everything from a textbook point of view and at the end of the day the reader is still going to have questions about how to do things that this book doesn't touch on. However, what do you expect from a book that attempts to cover so much that even its huge size isn't up to the job?
My only real issue with this book is whether or not an encyclopedia of .NET is a good idea or necessary. If you think it is then you are unlikely to find a better one.
So, yes, the final verdict has to be - highly recommended for the thinking C# programmer.