What you'll learn:
- Understand and appreciate C#7, C#8 and C#9 language features
- Learn how to use new language features in practice
This short course covers the latest and greatest features of C#, covering versions 7, 7.1,7.2, 7.3, 8.0, 9.0 and 10.0 of the language that are being sim-shipped with corresponding VisualStudio updates.
Course Topics
Here's every language feature presented in this course, grouped by the version of the C#language.
C# 7:
Out Variables
Pattern Matching (is and switch expressions)
Tuples and Tuple Deconstruction
Local Functions
Ref Returns and Locals
Expression Bodied Members
Throw Expressions
Generalized AsyncReturn Types
Literal Improvements
C#7.1:
How to turn on C#7.1 support
Async Main
Default Expressions
Ref Assemblies
Infer Tuple Names
Pattern-Matching with Generics
C# 7.2:
Leading Digit Separators
'Private Protected' Access Modifier
Non-Trailing Named Arguments
Reference Semantics on Value Types:
'In' Parameters
'Ref Readonly' Variables
'Ref Struct' and Span
C# 7.3:
Performance improvements
Access fixed fields without pinning
Reassign ref local variables
Use initializers on stackalloc arrays
Use fixed statements on any type that supports a pattern
Enhancements to existing features
Tuple == and != support
Use expression variables in more locations
Attach attributes to backing field of auto-properties
Improved method resolution when arguments differ by 'in'
Improved overload resolution
New compiler options:
deterministic
publicsign
pathmap
C#8:
Nullable Reference Types
Indices andRanges
DefaultInterface Members
PatternMatching
C# 9:
Record Types
Top-LevelCalls
Initial Setters
Pattern Matching Improvements (type patterns, parenthesized patterns, conjunctive and, disjunctive or, negated not, relational patterns)
Performance andInterop (Native sized integers (nint/nuint), function pointers, SkipLocalsInit)
Fit andFinish (target-typed new, target type resolution of conditional expressions, static modifier for lambda expressions and anonymous methods, covariant return types, foreach GetEnumerator() use, discards as parameters to lambdas, attributes on local functions)
C#Code Generators (partial method syntax, module initializers)
C# 10:
Record Structs
Global Using Directives
File-Scoped Namespace Declarations
Extended PropertyPatterns
GenericAttributes
Lambda Improvements (attributes, explicit return types, natural type inference)
Enhanced #line directives
Prerequisites
Knowledge and understanding of C#6 and earlier
General experience in .NET/C#application development
Learning Outcomes
An understanding and appreciation of latest C# 7/7.1/7.2/7.3/8/9 language features
Understanding of how to convert existing C#code to C# 7/7.1/7.2/7.3/8/9