I recently read Programming C# 5.0 by Ian Griffiths as part of O’Reilly’s Blogger Review program. For those who care about formats, I read the epub format and not the print one. Overall the book isn’t bad, but there are some issues that left me less than impressed. My primary issue with the book is that it isn’t clear who it is intended for. Certainly, targeting a generic C# book is going to be hard given the wide variety of areas C# is used in (Azure, XNA / MonoGame, WinRT, etc) and it seemed like there was a need for the book to be a little more specific in terms of domain.
There also are some issues in terms of the skill (or rather experience) level of the book’s target audience. It starts by explaining the history of C# and .Net and in particular how it related to Microsoft’s Java strategy — in that C# was their answer to Java. All of that is very interesting and probably something that a C# developer should know. However, things quickly fall of the rails when the author explains what ints and other basic types are. This trend continues for about four chapters but then the book quickly moves on to more advanced and more interesting topics.
Despite this odd and somewhat jarring inability to figure out who this book is for and what the scope of the text should be there is a good deal of value to get out of the text. For instance, the text teaches not just programming in C# but how to program in idiomatic C# and to a lesser degree how to follow the accepted, though admittedly somewhat informal and subject to personal tastes, conventions established by Microsoft and the .Net community.
Overall, I would recommend this book to someone in school or who is new to programming and suggest that person read it straight through. For more advanced users or users who have a few years of development experience in another language, I’d still suggest picking this book up but skipping to about chapter four or five.