Author: Bart De Smet
Publisher: Sams, 2011
Aimed at: Intermediate to advanced programmers
Pros: Good explanations, comprehensive coverage
Cons: Heavy and unwieldy size
Reviewed by: Mike James
This is another encyclopedic tome promising to cover every aspect of a language. Is it worth its weight?
It is aimed at intermediate to advanced programmers and most of this group could happily skip part one of the book without missing anything. Why include such a long section on history and getting started in a book that is clearly aimed at a more advanced reader.
Part II is where the book really gets started with a detailed and fairly technical walk through everything that is part of the C# language and arguably some that are not. There isn't any point in listing what it covers as it covers everything. Starting off from the basics of type, flow of control, expressions and so on it works it way up to generics, collections, delegates and events. It also covers the more recently introduced topics such as Linq and dynamic typing. It would have been nice to have a chapter on multitasking but this is covered in other chapters and in a later section.
The style is friendly but ideas are introduced in a fairly technical style but without making things more complicated than they need be. There are lots of box outs that provide background information and comments on exceptions and explanations that fit into a wider context. Don't expect to see any long examples - it isn't that sort of book. What examples there are demonstrate the ideas in the shortest possible code. You also wont find very many accounts of how to use use things in clever ways - this isn't a book of hints, tips and tricks, it's about principles.
Part III is on the Base Class Library - the BCL - and of course this is so fundamental that it is almost part of the language even if it is also part of every other .NET language as well. This is where the book deals with topics that you might have thought should have been in the main part - diagnostics, threading and task and data parallelism.
I can't claim to have read this book cover to cover - at over 1500 pages it is difficult to carry let alone read in its entirety. The chapters that I have read worked well as standalone introductions to the particular topic I wanted to know about. This doesn't really work as a reference text - but you have the web for that - but it does work very well treated as short introductions to topics. If you prefer lots of big examples you will be disappointed as its not that sort of book. If you are looking for tricks and recipes you will again be disappointed as it is certainly not that sort of book. My big complaint about the book is its size and the very thin paper used for each page. It just doesn't feel nice to read - but a thicker paper would have made me complain even more about its size.
Apart from the physical problem of reading such a huge volume I have nothing to say against it. As long as you are not a complete beginner - this isn't the place to start - it's highly recommended.