Author: Joseph and Ben Albahari
Publisher: O'Reilly, 2012
Auidience: All C# developers
Reviewed by: Mike James
Despite being part of the “in a Nutshell series” this is a seriously thick book and the latest edition covers the new features in C# 5.0.
The reason it is so big for a reference work is that it doesn't constrain its coverage to what you might consider the core of C#. Indeed the basics of C# are covered in the first three chapters and Chapter Four is entitled Advanced C# - less than 200 pages in total.
From this point the book moves into increasingly general territory focused mainly on the framework. Subjects covered include - collections, three chapters on LINQ, Garbage collection, diagnostics, streams and I/O, networking, serialization, assemblies, reflection, dynamic types, security, threading, parallel programming, asynchronous methods, application domains, interop and regular expressions. One big and obvious omission is any discussion of the UI - either Windows Forms or WPF.
A new chapter introduces the big new feature in C# - asynchronous programming. The chapter deals with the basic thread class and then moves on to tasks and later await. This introduction to threading means that the previous threading chapter is now on "advanced" threading - mostly locks and thread storage. The chapter on asynchronous methods i.e. how it was done before C# 5 has been removed. Thus the new elements of C# 5 have been incorporated without making the book significantly larger.
You can see that the order and topics are something of a mess - but who says that a language can be explained in a single linear sequence.
Given that one of the problems in reading this book is its huge size it might have been better to write a more focused book on C# and a couple of other books on additional topics.There is a very real problem in reading this book caused by its size. You either have to decide to fold the thick brick open and put something on it to hold it open or break its spine so that in time pages are almost certain to fall out.
Each of the short sections on a particular topic is very terse and the examples are very short. In most cases if you don't already know something about the topic then this isn't going to help. However, if you are trying to use some feature then it does form a sufficient reference for you to make a start. The book isn’t aimed at complete beginners and readers are expected to have some general programming experience. However if you are a reasonably intelligent C# programmer this will make a great way to discover a little more than just the basics of a topic you need to get up to speed on.
This is a book C# programmers will find an useful addition to their bookshelves if they require a reference work on C# and the wider framework. Recommended.