views:

456

answers:

9

I have recently finished reading C# in depth by Jon Skeet and I'm looking for the next book to read, one that extends a little more "in depth" my knowledge of c# and .NET in general and I'd be open to other kind of books. I've read Code Complete and The Mythical Man-Month, and though I find them both to be awesome, I'm looking more for an in depth technical book than an "academic" theory book.

I've read so far (in that order):

  • Windows Internals, Mark E. Russinovich (only bits here and there, specially memory related)
  • Professional .NET Framework 2.0, Joe Duffy
  • C# in Depth, Jon Skeet

Any suggestions?

Things I'm interested:

  • Code optimization, performance and IL generation.
  • Concurrency. Memory models, cachelines, etc (this one doesn't need to specifically be about the CLR or c#)
  • Deep understanding of the CLR (somehow an "under the hood" or "secret features" :D)

Edit: If it isn't so much to ask could you explain what's covered or what did you like more of the books?

Thanks everyone for the answers. Finally I think I'd be learning more about the CLR, then I'd probably go for the Joe Duffy and finally reread the Hobbit :)

+10  A: 

I have recently finished reading C# in depth by Jon Skeet and I'm looking for the next book to read

C# in Depth, Second Edition ;-p

Marc Gravell
I'd recommend holding off till the 4.0 edition personally, if they've already read one edition of it.
Matthew Scharley
Any idea when it will be out?
Bruno Reis
@Matthew Scharley: That is the edition that will cover C# 4.0.
Jason
I seriously considered it but having already read First Edition ... With all respects to Jon Skeet who'd be able to instantly destroy me if he wished to :), I think I prefer to spend my money somewhere else.
Jorge Córdoba
@Matthew - it *is* the 4.0 edition; Jon might be able to advise on release estimates
Marc Gravell
@Jorge: I'm hoping there'll be a way for first edition ebook owners to get hold of the new chapters for the second edition in some cheap way (but not the revised first edition chapters, probably).
Jon Skeet
+15  A: 

CLR via C# (Second Edition)

Robert Harvey
Nice, the suggestion from Amazon does include C# in Depth (have it) and More Effective C# ... I'm tempted to buy those two...
Jorge Córdoba
m-sharp
+1 - this is what I'd recommend for the CLR side.
Jon Skeet
+2  A: 

Pro C# 2008 and the .Net 3.5 Platform by Troelsen was pretty good.

If he's read C# In Depth I would say not. While Pro C# is a good book it's not as in depth as C# In Depth.
Jason
+3  A: 
Bruno Reis
Nice of you to hide behind the Community Wiki flag, isn't it now? :)
Robert Harvey
Guess he just meant I should read books other than programming (which I do)...
Jorge Córdoba
@Robert Harvey: =]
Bruno Reis
+7  A: 

Concurrent Programming for Windows

Has great coverage of concurrency on Windows using .NET and Native apis. Considering the multi-core world we live in now, this is a must read for any serious Windows developer.

m-sharp
+1 - this is what I'd recommend for the concurrency side.
Jon Skeet
+2  A: 

Essential .Net by Don Box, it's a bit dated, being about CLR ver 1.x, but it covers internals stuff I've seen in no other book.

Charles Bretana
+2  A: 

Accidentally I've read today Paul Graham's story about his experience with LISP... he talks about unique LISP features like closures and macros, where you can get access to compiler's AST... and doesn't it sound like C# today? So, taking an offtopic risk, I'd suggest reading any LISP book - that's what I'm doing right now ;-) I took LISP course in college but never used it anymore... being a big fan of C#'s lambdas etc, I think now, what if LISP is really a good language? ;-)

Well, actually I'd suggest reading about other languages, too, not only LISP - that's always good. But LISP seems to be a good one. And as a benefit, maybe I'll finally understand why people use Emacs ;-)

Or, maybe, take a look at "next generation" .NET languages like F#, Boo, or even how to use your own DSL ones. Boo, as far as I understand (not too much), does cover both LISP and DSL areas - a bit - since it allows to change the language itself.

queen3
+4  A: 

My opinion is that by mastering the craft of debugging a framework or a platform you gain deep understanding of it's internals.

Only after reading Advanced Windows Debugging I gained this deep understanding of the windows internals. I expect that Advanced .NET Debugging which should be published in two weeks will give us the same deep understanding of the CLR internals.

BTW, The third edition of CLR via C# should be published in three months.

Moshe Levi
+2  A: 

The ECMA 335 spec for a deep understanding of the CLR (CLI) for conncurrency Joe Duffy's Concurrent Programming on Windows.

For a deep understanding of C# you might try the Ecma 334 spce though it is outdated. There is also the C# Programming Language book 3rd edition which Anders Hejlsberg is one of the co authors on (Addison Wesley publisher) ... or you can just download the C# Language Specification from msdn.

Jason Haley