C# Design Patterns demonstrates 23 different design patterns which are very useful in object-oriented programming. As the name of the title implies, this particular books focuses on showing these design patterns in the C# language, much like the author, James Cooper, has previously done for other languages such as Java and Visual Basic.
If I had to rate the book overall, I would give it an "average" rating, as the book just doesn't seem to stand out among all the other titles available. The book seems to fit best with a specific audience. People who would benefit the most from this book are intermediate-level C# programmers, who know very little about object oriented design patters.
If you are a beginner with C#, this book is not for you. The Basics of C# are covered very quickly in the first 7 chapters, but does not go into detail enough to help novice programmers. In fact, I cannot understand why those chapters are included at all. The materials in those chapters breeze over the C# language too fast for C# beginners, but at the same time, it is far too basic for those who have experience with C#. Beginners would be better suited picking up a introduction to C# book and working with the language for a little while before reading C# Design Patterns.
Intermediate C# programmers with little knowledge of object-oriented design patterns will develop a new skill set from reading the book. The everyday usefulness of these design patterns makes a book on the subject a very worthwhile read. If the reader is already familiar with C# than this book is a good choice from them.
The code samples presented in the book are well constructed and the accompanying CD provides has provided benefit whenever I wanted to see a full code listing. For certain code listings in the book, I would have liked to see a few more comments. Sometimes, it takes a little while to understand exactly what the author is doing with the code. The screenshots and figures do a very nice job representing the concepts visually.
One of the best attributes in this book is the thought questions at the end of the chapter. They really get the reader to think and make sure they understand the concepts before continuing. Having a through understanding of each pattern is crucial as later patterns either build or use patterns which have already been learned.
People who have read James Cooper's previous works such as Java Design Patterns or Visual Basic Design Patterns or Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides really do not have a need for this book. This book covers all of the same material as those other works.
I have noticed several typos and minor mistakes throughout the book, which is getting far too common in technology books in general. With that aside, I would recommend this book to anyone who knows a good bit of C# and would like to learn about Design Patterns used in Object Oriented programming. I would also recommend that these people skip the first 7 chapters or quickly skim over them. As for anyone else, I would suggest passing on this title, and getting a book that caters to design principles in a language they are more familiar with.