Stephen Davis, C# Weekend Crash Course (Hungry Minds Press, 2002)
A while back on one of the mailing lists to which I am subscribed, a chap popped up asking about books that cover programming console applications (you know, those things that when you run them, pop up in a command line box instead of running within Windows) in depth. My first reaction was "who on earth would want such a thing?" I still don't really know the answer to that, but if he's reading this, I recommend this book highly to him. Davis' whole book is devoted to console apps and DLLs.
And therein lies its major fault. In a programming world where, let's face it, the GUI has won the day (be it Windows, Xwindows, BeOS, Apple, what have you), a book that doesn't even mention the existence of programming graphical forms is painfully outdated, no matter how recently it was released. (The other C# book I'm reading right now was published the year previously, before Microsoft had even finished the C# visual form designer, and still manages to devote a chapter to Windows forms in C#!) The omission is unforgivable in a book on program design in the twenty-first century, even more so when the books covers Microsoft's .NET technology.
As for the program design itself, there's a decent amount to be learned here if you're trying to pick up C# after knowing another programming language. (As a longtime C++ programmer, I have no idea how total newbies will react; proceed at your own risk.) A few of the sections try to cram far too much into one thirty-minute session, especially towards the end (the Collections session is almost unreadable without a concordance of some sort; thankfully, I happened to be at the same portion of A Programmer's Guide to C# at the time, and it helped me figure things out without too much pain).
Probably worthwhile as an adjunct, but I can't see it being a primary reference guide for any serious programmer. ** ½