The Absolutely Awesome Book on C# and .NET
The book is a detailed technical resource for .NET developers. It covers:
- C# up to version 7.3 with a quick glance at the upcoming C# 8.0 (which was still in development when the book was released),
- .NET Framework, .NET Core and .NET Standard (but also mentions other flavors of .NET).
The focus is mostly on general concepts which apply no matter what type of applications you develop. Specific application frameworks serve only as examples when convenient. Some prior experience with .NET development is assumed. The book is best suitable for readers who:
- know their way around C# and .NET but want deepen their existing knowledge and understanding,
- are experienced .NET developers but want to refresh their knowledge and catch up with the latest features.
The Q&A format makes it is easy to find specific topics of interest and only focus on those. However, the questions are carefully ordered in a way to still make the book cohesive when it is read from cover to cover.
Section 1, .NET and Common Language Runtime (CLR), provides a high-level overview of .NET today and dives deeper into some aspects of the CLR, focusing less on the code than the remaining sections.
Section 2, The Type System, explains the core principles of types in C#: the difference between reference and values types, type safety, static and dynamic binding, parameter passing, etc.
Section 3, Classes and Inheritance, explains how the principles of object-oriented programming are implemented in C# and how they can be used to correctly and efficiently develop your own types.
Section 4, String Manipulation, dives into a few important details about strings in .NET and C#, focusing on the performance and localization aspects that should always be considered.
Section 5, Generics and Collections, explains two very important and closely related topics: support for generics in C# and the built-in collection classes.
Section 6, LINQ, builds on the previous section to explain the LINQ (Language INtegrated Query) APIs in as much detail as necessary to confidently use them in every-day development.
Section 7, Parallel and Asynchronous Programming, gives most attention to the
await keywords: what they mean, how to correctly use them, and what to watch out for.
Section 8, Serialization and Reflection, explains two related sets of APIs in .NET which you might not use often but should still have a good understanding of to recognize when they can be a good solution for your problem.
Section 9, C# 6, 7 is a thorough overview of the language features which were recently added to C#. Although none of them is as revolutionary as
await were, they can still make your code better in certain scenarios.
Section 10, A Peek into the Future, concludes the book with a coverage of latest developments in both C# and .NET at the time when the book was being finalized.