All programmers have a comfort zone- the technical skill set they've acquired. This can vary enormously between individuals and for some, mention of words like threading or generics will bring on looks of horror and palpitations. These are all topics covered in some considerable depth in "Accelerated C# 2005". C# 2.0 could be described as having some of the really advanced bits from
C++ and some from
Java added.
Getting into C# 2.0
This book is not for all but if you've mastered
C# in .NET 1.0 and 1.1 and want to stretch your knowledge with the new features of C# 2.0 (and don't forget C# 3.0 is on the way) this is an excellent way forward. At 400 pages it won't break your bank balance or your shelf (unlike some other books).
Starting with an overview of C# and the CLR the book moves quickly on to a detailed look at classes, structs and objects in a chapter over 70 pages long. Until I read this chapter I thought I was well informed about objects in C#. Let's just say I am a lot better infomed now!
Programming by Contract is an increasingly popular approach to design and the chapter on Interfaces and Contracts is not a bad introduction to it and covers enough to get you started. Whereas the chapter on operator overloading generally tells you to be careful about using this technique as other .NET languages don't support overloading!
Really Meaty
Something I particularly liked is that the author is not afraid to drop into
CIL to illustrate points. He is clearly comfortable below the hood. For instance on arrays where he points out that the .NET
framework CLR will use vector instructions for single dimensional arrays. Then he ventures out of my comfort zone by looking at thread synchronization in ICollections. Fascinating stuff.
Chapters 11 (Generics) and 12 (Threads) are excellent introductions to these advanced topics. Chapter 13 though is possibly one of the most useful as it is a 'Good Practice' guide to C# 2.0 class design. To paraphrase Supertramp's "Logical Song", Should you make your objects cloneable, disposable, finalizable, formattable? The pros and cons are admirably discussed though some programmers will doubtless scratch their head at the chapter's title 'In search of C# Canonical Forms'. .
Conclusion
Not surprisingly this book gets a 5 and is very highly recommended. The author's enthusiasm and experience shine through. It's a worthy addition to anyone's desk and it will not be on your shelf long enough to gether dust! But be prepared to step outside your comfort zone!