About the book
C# in Depth, written by Jon Skeet and published by
Manning
in 2008, takes a detailed look at C# versions 2 and 3. It assumes a reasonable level
of knowledge on C# 1, which enables experienced developers to avoid wasting time and money
on material they already know. However, one chapter is dedicated to areas of C# 1 which
are often poorly understood, and which are important to learning C# 2 and 3. The main
part of the book is split into two parts, one for C# 2 and one for C# 3, making it easy
to tell which feature belongs in which version.
C# in Depth does not cover the .NET framework except when it's relevant to learning
C# as a language in itself. The built-in generic collections are examined in chapter 3,
and many of the LINQ standard query operators are covered in chapter 11 (with the rest being
specified in the appendix). Although the other built-in LINQ providers are covered briefly
in chapter 12 (LINQ to SQL, LINQ to DataSets, LINQ to XML) the book does not aim to make
the reader proficient in these technologies - the dedicated book
LINQ in Action is a much
better resource for that purpose. (Indeed, the two books complement each other very nicely.) Instead,
the many providers are demonstrated in order to show the "big picture" of LINQ.
Why am I telling you so much about what the book doesn't contain? Well, from the start
I wanted to write a book which took the Unix philosophy of doing one thing, and doing it well.
By focusing on just the language, I've been able to go into more detail on C# than any other book
I've seen except the language specification itself - and that's not really designed for the purposes
of learning C#.
Personally, I dislike massive books which attempt to cover everything and in doing so don't actually
give you enough information about anything. If you're going to be really proficient at Windows Presentation
Foundation, you're likely to need a book about it - using a chapter or two from a general purpose book isn't going
to cut it. The same goes for other technologies.
I'm assuming that you actually want to be proficient in the technologies you're using rather
than just muddling through and hoping that everything will turn out right. I believe passionately
that if you have a deep understanding of the language and platform that you're coding against, you will
be much more productive than if it's all a bit of a blur. You'll work with the language
instead of against it, coding with idioms which are supported at a deep level instead of fighting
against restrictions
You don't have to be an expert in C# to read C# in Depth. You may well learn something even if you are
an expert already - I've been amazed how much it turned out I didn't know - but really I haven't aimed
the book at experts. I've aimed at people who want to be experts - who are passionate about
development, who want to understand exactly what each line of code does, and who are always looking
for smarter ways to work.
About the author
Who am I to tell you about C# in the first place? I'm a software developer and architect in the UK,
and a keen participant in the C# community, particularly the newsgroups devoted to C# and .NET.
Microsoft have awarded me as an MVP (Most Valuable Professional) since 2003, and I intend to continue
to aid the community in whatever way I can.
In writing this book, I've picked C# to pieces, delving into as many nooks and crannies of the
specification as I could find, identifying traps and pitfalls so that you don't need to discover
them the hard way.