CSharp 8.0 (C# 8.0)
Eintrag zuletzt aktualisiert am: 24.02.2022
C# 8.0 ist der Nachfolger von C# 7.3
C#-
Compiler Version 3.3
Erscheinungstermin: 23.9.2019
Support
Microsoft unterstützt offiziell C# 8.0 nur in
.NET Core 3.0 und höher. Es ist aber dennoch möglich, die meisten Sprachfeatures auch in älteren .NET-Versionen (
.NET Framework 4.x, .NET Core 1.x/2.x) zu nutzen.
Neue Sprachfeatures in C# 8.0
- Null Referenz-Prüfungen / Nullable Reference Types string? !.
- Standardimplementierungen in Schnittstellen (*)
- Switch Expressions
- Index ^ und Range .. (*)
- Null Coalescing Assignment ??=
- Alternative für verbatim interpolated Strings: @$ zusätzlich zu $@
- Async Streams (*)
- Static Local Functions
- using-Deklarations ohne Blöcke
- Recursive Patterns
- Unmanaged Constructed Types
- Readonly-Mitglieder in einer Struktur
- Dispose() für ref structs (Strukturen auf dem Stack)
(*) erfordert
.NET Standard 2.1, d.h. nur für .NET Core,
Xamarin,
Mono und
Unity. Nicht für
.NET Framework!
Details
Größte Neuerungen in C# 8.0 sind optionale Null-Refrenz-Prüfungen, Standardimplementierungen in Schnittstellen (vgl. entsprechende Neuerung, die es schon
Java 8 gab), Switch Expressions (
Methoden, die nur aus einer prägnanten Switch-Verzweigung bestehen), Index- und Range-Operatoren zur Adressierung von Teilmengen sowie asynchrone
Streams. Im Rahmen von
Visual Studio 2019 Version 16.3 können auch Entwickler, die noch mit dem klassischen
.NET Framework arbeiten, den neuen
Compiler nutzen, allerdings stehen dort wie angekündigt [
https://devblogs.microsoft.com/dotnet/building-c-8-0] einige neue Sprachfeatures nicht zur Verfügung und Microsoft will auch den dafür notwendigen
.NET Standard 2.1 nicht mehr für das klassischen
.NET Framework anbieten.
.NET Standard 2.1 wird ab folgenden Versionen unterstützt:
.NET Core 3.0,
Mono 6.4,
Xamarin iOS 12.16,
Xamarin Mac Version 5.16 und
Xamarin Android 10.0. Für
UWP und
Unity ist die Unterstützung für
.NET Standard 2.1 geplant [
https://docs.microsoft.com/de-de/dotnet/standard/net-standard].