When I flipped through the table of contents for this book, my first thought was that I'd wasted my money. I've been programming for 30 years, and using C# for at least five of those. I didn't think there would be much new to learn about (for example) IO, and assumed the chapter on it would be dull. ha, I was wrong there! I learned loads of new tricks and tips that I never knew before.
Even seasoned programmers will learn a lot from this book, and newcomers to C# will find all they need.
If I were to criticise it at all, it would be in the chapter on reflection. Not that there's anything wrong with this chapter, but like every other source on the subject I've read, it leaves me wondering why I would bother with it. I have heard of people who use reflection for all sorts of clever things, and I would love to know what and how, but have never found out. This book covers reflection in a clear manner, but didn't give me any great incentive for using it. That could be more a reflection (pun intended) on the subject rather than a criticism of the book.
As I said, this is a small criticism, and the number of tips and tricks I picked up in the other chapters more than made up for the lack of anything exciting in that one chapter.
However, even without the small gems in the familiar subjects, one of this book's real diamonds is the section on Linq. I've read a lot about it, and used it a lot, but never really understood it until I read this book. Together with the free LinqPad (written by one of the authors), it's a brilliant way to learn a very useful tool.
I haven't finished the book yet, but am happy to give it five stars even now. Strongly recommended.
Edit: 15th May '11 - Having finished the book, I still stand by my five star review, but would like to add that there is a very comprehensive set of chapters on parallel programming in C#. Given that I don't tend to write compute-intensive applications, this is of little interest to me, and I found it a bit boring after the first chapter. I just skipped it and skim-read the rest, taking mental note of the fact that it was there if I ever need it.
To be honest, I think this section should have been shorter, and the depth of material put into a book dedicated to parallel programming. However, given that the rest of the book was excellent, and the price was reasonable (so no complaints about being charged a lot for pages I wasn't interested in), I left it as a five start review, and just added this note.