zurück zum Artikel

Microsoft Connect() 2018: Preview von C# 8.0 mit drei neuen Sprachfeatures

Dr. Holger Schwichtenberg
Microsoft Connect() 2018: Preview von C# 8.0 mit drei neuen Sprachfeatures

Im Rahmen von Visual Studio 2019 Preview 1 liefert Microsoft auch erste neue Features von C# 8.0.

Durch die Installation von der ersten Preview von Visual Studio 2019 [1] erhalten Softwareentwickler auch eine Beta-Version des C#-Compilers in der Version 2.11. Diese enthält bereits drei neue Sprachfeatures von C#.

Die wichtigste Änderung sind dabei die Nullable Reference Types, die C#-Produktmanager Mads Torgersen schon im September 2017 angekündigt hatte [2]. heise Developer zeigte im Mai dieses Jahres ein Beispiel [3] anhand des damals auf Github verfügbaren Quellcodes des Compilers.

Nach einigen Diskussionen über die Frage, ob diese neue Prüfung, die NullReference-Laufzeitfehler verhindern kann, im Standard aktiv sein soll, hat sich Microsoft sich nun entschlossen, dass eine Aktivierung notwendig ist. In einem Video von Microsofts Connect();-Konferenz [4] zeigt Mads Torgersen, wie Softwareentwickler dies mit dem Ausdruck #nullable enable auf Dateiebene aktivieren.

Null-Prüfung für Referenztypen in C# 8.0

Null-Prüfung für Referenztypen in C# 8.0

Torgersen erwähnt aber auch, dass diese Einstellung auch auf Projektebene möglich sein soll. In dem entsprechenden Eintrag auf GitHub [5] fehlt aber die Information, wie dies in den Projekteinstellungen erreicht werden kann.

Von den am 12. November 2018 angekündigten weiteren neuen Funktionen [6] sind in der aktuellen Beta-Version des Compilers nur die asynchronen Streams sowie Indexe und Ranges enthalten, mit denen man auf prägnante Weise eine Teilmenge einer Menge definieren kann.

string[] Namen = { "Leon", "Hannah", "Lukas", "Anna", "Leonie", "Marie", "Niklas", "Sarah", "Jan", "Laura", "Julia", "Lisa", "Kevin" };
string[] t1 = Namen[1..3]; // zweiter und dritter: "Hannah", "Lukas"
string[] t2 = Namen[6..^4]; // sechs von vorne und vier hinten abschneiden: "Niklas", "Sarah", "Jan"
string t3 = Namen[^2]; // zweiter von hinten = "Lisa"

System.Range r1 = 1..3;// neue Klasse System.Range
string[] t4 = Namen[r1]; // zweiter und dritter: "Hannah", "Lukas"

Index i2 = ^2; // neue Klasse System.Index
string t5 = Namen[i2]; // zweiter von hinten = "Lisa"

Wie angekündigt, funktionieren Indizes und Ranges sowie asynchrone Streams lediglich in .NET-Core-Anwendungen, nicht in klassischen .NET Framework-Anwendungen, da diese Klassen zum .NET Standard 2.1 gehören werden, der nicht auf .NET Framework verfügbar gemacht werden soll [7]. (ane [8])


URL dieses Artikels:
https://www.heise.de/-4239397

Links in diesem Artikel:
[1] https://visualstudio.microsoft.com/vs/preview
[2] https://www.heise.de/news/Programmiersprachen-C-8-soll-Fehler-mit-null-verhindern-3835949.html
[3] https://www.heise.de/blog/C-8-0-erkennt-mehr-Programmierfehler-4040726.html
[4] https://www.microsoft.com/en-us/connectevent/?ocid=AID750056_QSG_SCL_287874
[5] https://github.com/dotnet/csharplang/issues/1939
[6] https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0/
[7] https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0
[8] mailto:ane@heise.de