Let’s start by saying that I loved this book. While in a speakers lounge once I picked it up from the sky-high give-away pile, started reading, got engrossed and well… it ended up travelling the 500 miles back home with me!
This is a book that would have been very useful when starting my .Net career. It is ‘simply’ a collection of nasty traps that .Net can lead you into. The book contains 75 separate gotchas organized into related sections.
Some gotchas are just that, but others explain tricky areas such as COM interop. Of particular interest to me was garbage collection and the Dispose()/ Finalize() coverage. I already knew everything that was written in these chapters but the concise manner in which they were written helped me collect my disjointed knowledge together. After reading chapter 5 I can confidently say that I understand garbage collection basics and the relative merits of dispose and finalize. The COM interop was of particular interest too. I had done this on a previous project, but was simply copying example code from newsgroups. This book gave a better idea of what happens with memory beyond us calling into the .Net RCW.
It is difficult for me to say how much of the book is out of date because of .Net 2.0 because I only have three months 2.0 experience. From what I have seen so far in 2.0 it looks like most of the gotchas are still valid. A gotcha does not mean that it was a flaw with the .Net design, just that somethings are tricky/ unexpected such as exceptions thrown from thread pools are lost. As you can guess I recommend people at least borrow this book. When (if?) a v2.0 of .Net Gotchas hits the shelves I recommend checking it out. The only bad thing I will say is that if you are experienced with .Net do not expect much of this material to be brand new, you will have heard of most issues before but probably not seen them documented quite so well.