C# 8.0: Änderungen bei Schnittstellen und Compiler
Microsoft hat der neuen C#-Version Spracherweiterungen spendiert. Der Compiler soll nun auf Programmierfehlern beruhende Null-Referenz-Laufzeitfehler abstellen.
- Dr. Holger Schwichtenberg
Nachdem 2017 C# 7.0 erschien, gab es erstmals Unterversionen der Programmiersprache (7.1, 7.2, 7.3) mit jeweils nur wenigen Änderungen. Die Hauptversion 8.0 hat Microsoft Ende September 2019 zusammen mit .NET Core 3.0 und Visual Studio 2019 (Version 16.3) veröffentlicht. Grundsätzlich kann man den 8.0-Compiler auch mit dem klassischen .NET Framework einsetzen. Aber – und das ist neu – dort stehen nicht alle neuen Sprachfeatures zur Verfügung, denn einige setzen die neue .NET-Klassenbibliothek voraus. Nur in .NET Core, aber nicht in .NET Framework verfügbar sind die in diesem Beitrag behandelten Themen "Standardimplementierungen in Schnittstellen", "Range und Index" sowie "asynchrone Streams".
Microsoft betont, dass die Weiterentwicklung des klassischen .NET Framework abgeschlossen ist, sodass man nicht mehr damit rechnen darf, dass C# 8.0 und folgende Sprachversionen dort jemals vollständig laufen können. C# 8.0 ist komplett nur auf .NET-Implementierungen verfügbar, die dem .NET-Standard 2.1 folgen. Einen Überblick über die .NET-Unterstützung bietet Microsoft.
Schon im September 2017 hatte Microsoft für C# 8.0 angekündigt, dass Referenztypen nicht mehr automatisch "nullable" sein sollen; also fähig, den Wert null anzunehmen. Will der Entwickler es dennoch, soll er es explizit deklarieren müssen. Nach einiger Diskussion hat man sich jedoch dazu entschlossen, diese Neuerung nicht zum Standard, sondern zu einer Option des Compilers zu machen.
Das war die Leseprobe unseres heise-Plus-Artikels "C# 8.0: Änderungen bei Schnittstellen und Compiler". Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.