As a speaker and a User Group leader, I often get asked “Where do I start learning .NET?". My answer is always “Start with the Troelsen book from Apress”. This has been true for previous versions of the framework, and after reading the latest edition covering .NET 4, it still holds true.
Andrew takes you on the path that covers what the line of business software developer needs to know about the capabilities of .NET. The book begins with pertinent background information on the evolution of .NET, the Common Type System (CTS), the Common Language Runtime (CLR), and tools like ILDASM and Red-Gate’s Reflector. Although not the most exiting reading if you are eager to start writing code, it is important for .NET developers to understand these concepts and tools.
Chapter 2 discusses the various tools (including Notepad++) that can be used to develop in C#. The majority of the readers will be using Visual Studio, but it’s good to know (and call out) that you do not have to purchase anything to write C# applications!
Parts 2 and 3 take a deep dive into the C# language itself and along the way explains the pillars of Object Oriented Programming (OOP) and how to implement them in C# and .NET. This is extremely useful to the reader who does not have OOP experience, but is also useful to those coming from another OO language to learn the specifics in C#.
Andrew does a great job explaining the more advanced topics like Generics, Lambdas, Language Integrated Query (LINQ), Multi-Threading, and (recent additions to the framework) the Dynamic Language Runtime and Parallel Programming.
A chapter on Windows Workflow Foundation and Windows Communication Foundation provide a nice intro to those topics, three chapters on ADO.NET (including the new release of the Entity Framework), and whole sections devoted to Windows Presentation Foundation (used for Windows development) and ASP.NET (used web application development) are the core pieces required for standard line of business development.
I have two disappointments with the book, the first is that the ADO.NET chapters include samples for binding data to Windows Forms (WinForms) and not Windows Presentation Foundation. I firmly believe the future of Windows Client development is WPF (not WinForms), and Andrew echoes this by focusing on WPF in the rest of the text. In fact, WinForms is relegated to an Appendix.
My other disappointment is that the new ASP.NET MVC framework isn’t discussed as an alternative to ASP.NET WebForms. There are plenty of books out there on MVC, but what I have really liked about these books is that they have presented all of the relevant options and left it up to the reader to decide which direction.
In summary, this book is massive (weighing in at over 1500 pages), and is still the single place to start learning .NET and C#. I have always used his books on the language to learn all the options available as a developer (and get a decent understanding of those topics), then picked up books that do a deep dive into the specifics (like Matthew McDonald’s Pro WPF in C# 2010: Windows Presentation Foundation in .NET 4).