Published: 12 Sep 2007
By: Alessandro Gallo

Review of the book: CLR via C# (2nd edition).

Written by: Jeffrey Richter
Pages: 694
Publisher: Microsoft Press
ISBN: 0735621632

 

Some words about the author

In case you haven't heard of Jeffrey Richter before; he's the author of great books about Windows programming. His most famous book, "Programming Applications for Microsoft Windows," has 4 editions and is considered the bible of Windows system programming. In the book I'm going to review, Richter goes deep into the CLR (the Common Language Runtime), the new programming model that is leveraged by .NET applications. This book addresses version 2.0 of the CLR.

CLR dissected

The CLR is the portion of the .NET framework that provides a programming and an object-oriented model for developing applications that run on Microsoft Windows. The .NET framework API and various programming languages (like C# or VB.NET) take advantage of the features provided by the CLR.

Typically, .NET developers program using one of the many programming languages that leverage the CLR. Richter decided to demonstrate the features of the CLR by using C#, but keep in mind that this book is not about the C# programming language. For example, he could have used CLR assembler; though in this case I would probably drop two or three stars from my final rating.

In fact a high level, object-oriented language like C# is an optimal choice to explain how the CLR works and what has to offer. Let's see if the book structure, the contents and the writing style let this book meet its goals.

The book

The book is divided in five parts. In the first part we take a look at how the CLR executes a program, what an assembly is and the various options for deploying an application. Here we find nearly everything we need to know about sharing and signing assemblies, as well as versioning and deployment issues. Part II, III and IV dive into types. The author shows the nuts and bolts of primitive, reference and value types. Entire chapters are dedicated to events, interfaces, delegates, generics and nullables. Part V explains how to take advantage of features such as exception handling, garbage collection, Reflection, asynchronous programming and thread synchronization.

I'm impressed by the amount of information this book provides. The writing style is concise yet clear and not boring at all. Richter is great at explaining how things work. He also does a great job of highlighting issues and pathological cases. There is a lot of code; examples are cleverly built to focus on a particular concept and to clearly demonstrate what explained in the previous paragraphs. The book is full of suggestions, guidelines, annotations and sidebars. Sometimes, Richter's point of view and his personal opinions are clearly stated; but they're enjoyable and never interfere with the contents.

I've particularly enjoyed part V of the book. The chapters dedicated to exceptions, garbage collection, AppDomains, Reflection, asynchronous programming and thread synchronization are by themselves worth the price of the book. In these chapters you'll find plenty of information about CLR internals and how to leverage modern programming techniques.

Conclusions

This book is a must-have for a .NET developer. It's great both as a learning resource and as a core reference. If you already have basic understandings of object-oriented programming and C#, you can't miss this book. Five stars out of five.

<<  Previous Article Continue reading and see our next or previous articles Next Article >>

About Alessandro Gallo

Alessandro "Garbin" Gallo is a Microsoft MVP in the Visual ASP/ASP.NET category and a .NET developer/consultant. He is a contributor for the Ajax Control Toolkit project, owned by Microsoft. Alessandro won the Grand Prize at the "Mash-it-up with ASP.NET AJAX" contest held by Micr...

This author has published 23 articles on DotNetSlackers. View other articles or the complete profile here.

Other articles in this category


C# 4.0 Reflection Programming - Part 3
In the previous article, we used the reflection to obtain the information of an assembly, module, ty...
C# 4.0 Reflection Programming - Part 4
In this last article of this series, we will learn what to do with reflection. But before making the...
C# 4.0 Reflection Programming - Part 2
As introduced in the first article, the most typically-used tools associated with .NET reflection ar...
Understanding and Using Extension Methods
Extension methods were new to C# 3.0. They allow you to add a method to an existing type without hav...
Introduction to C# 3.0 features
C# 3.0 introduced some of very useful features built on top of 2.0. This article explains the usage,...

You might also be interested in the following related blog posts


October's Toolbox Column Now Online read more
September's Toolbox Column Now Online read more
August's Toolbox Column Now Online read more
Create custom LINQ providers fluently read more
Converting LINQ queries from query syntax to method/operator syntax read more
The Joy of Code Reviews read more
Troubleshooting a Spooler Crash read more
There's No Laughing in the Bookstore! read more
Looking for Setup and Deployment Project Templates? (Mary Lee) read more
FxCop for Ajax Code read more
Top
 
 
 

Discussion


Subject Author Date
placeholder THE book on C# Granville Barnett 9/19/2007 12:19 PM
What I think of CLR via C#. Derek Smyth 9/26/2007 7:37 PM

Please login to rate or to leave a comment.

Free Agile Project Management Tool from Telerik
TeamPulse Community Edition helps your team effectively capture requirements, manage project plans, assign and track work, and most importantly, be continually connected with each other.