Author: Mark Michaelis & Eric Lippert
Publisher: Addison Wesley, 4th Ed
Audience:Experienced developer transitioning to C# from other languages
Reviewer: Ian Elliot
The latest edition of a highly recommended book that combines reference and tutorial material.
This is a book that hasn't changed very much in going from its 3rd edition, covering C# 4.0, to the 4th edition covering C# 5.0. It is now attributed to two authors, Mark Michaelis with Eric Lippert, but this is a formal recognition on the cover of Lippert's input which was previously only mentioned in the acknowlegments.
The book is designed to have three main functions the first of which is
"comprehensive coverage of the C# language, going beyond a tutorial and offering a foundation upon which you can begin effective software development projects".
It also sets out to give readers already familiar with C# "insight into some of the more complex programming paradigms" and finally it is intended to serve as a "timeless reference".
The authors attempt to cater for both experienced programmers and relative beginners and use clearly indicated sections throughout to introduce Advanced and Beginner Topics - but this is not intended as a book for the complete beginner to programming.
It is an authoritative book - written by experts who have the confidence to provide Guideline panels with Do's and Don'ts and thing to Avoid or Consider and it also has Language Contrast boxouts to help those familiar with C++ and to a lesser extent Visual Basic and Java.
One feature of the book is the Mind Maps at the beginning of each chapter that give an outline of its contents. These are very effective in showing you the flow of topics covered.
The body of the book has added about thirty pages to cater for new features in C# 5.0 but, as with the earlier version, this is a book that covers C# in its entirety and has a sense of its history and evolution. One really useful feature, that accounts for 15 additional pages is that, in addition to the complete index, there are indexes for the new topics introduced in each of C# 3.0; C# 4.0 and C# 5.0.
The chapter structure is identical to its predecessor, which is ideal as its a logical structure. It starts from the very basics - a Hello world program - and works its way through the foundations of the language - data types, flow control, methods, classes, Inheritance, Interfaces - and goes to more advanced topics such as delegates, the effect of LINQ on collection objects, reflection, multithreading, interop and the CLI.
Reflecting the changes in C# 5.0, the most extensive re-writing in the book is in the two chapters on Mutlithreading (Chapter 18) and Synchronization (Chapter 19). The former is now the longer of the two and discusses the details of multithreaded programming using the Task Parallel Library (TPL) and Parallel LINQ (PLINQ) introduced in C# 4.0 and later in the chapter explores the Task-Based Asynchronous Pattern in C# 5.0 with the new async / await pattern. Chapter 19 is now devoted to Thread Synchronization and material on mutlithreading patterns and timer callback mechanisms that have been displaced with the introduction of async / await has been moved to two new appendixes on Interfacing with Multithreading Patterns Prior to the TPL and C# 5.0 and Timers Prior to the Async/Await Pattern of C# 5.0
In its previous edition this book already had a 5-star rating so there's no scope for using our rating system to indicate improvement. It is however even better than the previous edition and if you are looking for a reference that covers C# throughout its history then this one is highly recommended.