Author: Andrew Troelsen
Publisher: Apress, 5th Ed, 2010
Aimed at: C# programmers, novice to expert
Pros: Encyclopedic with lots of high quality material
Cons: Its size makes it difficult to handle, some topics ignored
Reviewed by: Mike James
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.
This is the fifth edition of a book that has been growing at each revision. It is now simply too big to read. At 1750 pages a single paperback edition is simply crazy. You have little choice but to read it on a desk and I doubt very much that the binding is going to hold it for very long. The simple solution would be to split it into two volumes - a part one on the core of C# and a part two on advanced features. The book is actually structured seven parts already so division would be very easy. Presumably, as this is not what the publisher has decided to do, there must be good economics against it. Whatever the reason it is a serious problem and it can only get worse at the next edition.
So leaving the size of the book aside for the moment what to make of it otherwise?
Obviously where its size counts it in its coverage of the possible material The seven sections are: Introduction to C#, Core C#, Advanced C#, Programming with .NET assemblies, Introducing the .NET Base Class Libraries, WPF and ASP .NET. As you can see not all of the topics covered are core C# language topics. The title of the book is "C# 2010 and the .NET 4 platform" and this is taken seriously. However this means that you have a big book on an even bigger topic. A subtitle on the front cover is rather expressive of this idea:
Exploring the ..NET universe using curly brackets.
The book starts off at a fairly low level discussing many aspects of the CLR and the Framework that the average C# programmer might never need to know about. As we get deeper into the book it increasingly becomes alternative or parallel documentation. It rarely strays from the beaten track and there are tables of methods and properties that you can just as well look up on line. There are discussions of all the usual C# topics functions, pass by reference, pass by value, types and so on. The parts up to page 522, i.e parts 1, 2 and 3, form a very reasonable complete course on C#. This isn't suitable for the complete beginner to programming but it would make a very good tutorial text for the novice C# programmer willing to learn the ideas and not just the how-tos.
There is a tendency to explain things via examples rather than principles but as the examples are all fairly short and understandable this works quite well. As the book progresses it actually improves by becoming less of a reference book and more of an explanation of how things work.
From here the book goes into some esoteric topics concerned with deployment and packaging including cross-language programming, reflection and so on. Chapter 17 is about understanding CIL (Common Intermediate Language and using the assembler and the disassembler. Chapter 18 deals with the new dynamic language runtime and proves that the book really has been updated for .NET 4.0, as does chapter 19 on threading and parallel programming using PLINQ.
Then we have a number of chapters on database both traditional ADO style and entity framework style. A quick introduction to WCF is followed up by WF and WPF - three technologies linked by acronyms that start with W. Given how big a subject WPF the overview included isn't a bad introduction. All of these later sections are really aimed at the expert C# programmer who isn't so expert at the technologies being discussed.
The final part of the book deals with ASP .NET and related web technologies. Again given the size of the subject this is a good introduction. Missing is any discussion of Silverlight or the new MVC approach to ASP .NET. Given my earlier complaints about the size of the book you might think that this is to be applauded but arguably both technologies are radical changes to ASP .NET and you really need to take them into account. As a result this part forms a good introduction to ASP .NET for the expert programmer but it really isn't an introduction to the full range of Microsoft web technologies.
A consideration of Windows Forms is relegated to an appendix. This raises the question of whether or not the Windows Forms approach really has been consigned to the history books or if there it still has a role. But these are deep questions and this book is already too long.
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 doesnt' 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.