Programming C# 10 Book, by Ian Griffiths, published by O'Reilly Media, is now available to buy.
Endjin Technical Fellow and 15 times Microsoft MVP Ian Griffiths has been the author of O'Reilly Media's Programming C# book series for over a decade; C# 5.0 (2012), C# 8.0 (2019), the latest edition covering C# 10 (and C# 9.0 features) has just been released to buy: [Amazon UK], [Amazon US].
The .NET landscape has changed dramatically since the C# 8.0 edition was published in 2019; the "One .NET" initiative finally delivered a unified, high-performance, multi-CPU architecture, cross-platform version of .NET with Long Term Support.
Programming C# 10 covers all of the additions and changes to the C# language that have been made since the C# 8.0 edition, including:
C# 9.0
- record types
- partial methods
- type patterns
C# 10.0
- async keyword
- boilerplate reduction
- CallerArgumentExpression
- global using directives
- ignoring arguments in anonymous methods
- namespace declaration
- nullable references
- property patterns
- record structs
- release of
- return types for anonymous functions
- string interpolation
- throwing exceptions
- tuple deconstruction
- using static directives
- zero-argument constructors
The book is written for experienced developers who want to gain a thorough understanding of C# and the underlying .NET runtime.
Code samples from the book can be found at https://github.com/idg10/prog-cs-10-examples
Ian has also published a number of in-depth articles delving into the nuances of C# 9.0 / 10 / 11 and .NET 6, which you may find interesting:
- When C# 9.0 patterns go wrong: mechanism over intent
- C# 10.0 implicit global using directives
- How C# 10.0 and .NET 6.0 improve ArgumentExceptions
- How .NET 6.0 boosted Ais.Net performance by 20%
- Raising Coding Standards with .NET 6.0 Code Analyzers
- C# 10.0 improves handling of nullable references in generic types - no more AllowNull
- C# 11.0 preview: parameter null checking
- Excel, data loss, IEEE754, and precision
- C# Lambda Discards
- Lazy and once-only C# async initialization
- C# 11.0 new features: raw string literals