Programmiersprache: Das fertige C# 10 läuft nicht nur auf .NET 6
(Bild: Denis Linine/Shutterstock.com)
Zusammen mit .NET 6 ist die zehnte Version von C# erschienen. Neben Vereinfachungen bei den Namensräumen bietet es syntaktische Zuckerstückchen für Entwickler.
C# 10.0 ist gleichzeitig mit .NET 6 erschienen, und es ist implementiert in der Version 4.0 der neueren, Roslyn-basierten Variante des C#-Sprachcompilers. Die zehnte Version der Programmiersprache wird offiziell von Microsoft nur zur Verwendung mit .NET 6 unterstützt [1]. Allerdings kann man die meisten Sprachfeatures auch in .NET Core, .NET Framework, Mono und Xamarin nutzen, indem man die <LangVersion> in der Projektdatei (.csproj) auf 10.0 stellt. Einen Überblick über die neuen Sprachfeatures bietet Abbildung 1:

(Bild: GitHub [2])
Vereinfachungen für Namensräume
Bei den syntaktischen Vereinfachungen hat sich Microsoft dieses Mal insbesondere auf die Namensräume gestürzt. Mit globalen Namensräumen (global using Name.Name.Name;) lässt sich vermeiden, in jeder C#-Datei immer wieder gleiche using-Zeilen zu schreiben. Mit der Aktivierung der impliziten Namensräumen in der Projektdatei können Entwickler eine Reihe üblicher Namensräume aus der .NET-Klassenbibliothek automatisch importieren, unter anderem System, System.IO, System.Linq und System.Threading.Tasks.
Während Namensräume bisher immer mit geschweiften Klammern um die Typdeklarationen herum zu schreiben waren, können Entwickler nun auf Dateiebene einen Namensraum mit der Anweisung namespace Name.Name.Name; für eine ganze Datei festlegen. Damit entfällt eine Einrückungsebene, zumal die meisten C#-Dateien sowieso nur einen Namenraum deklarieren.
Record-Typen auch auf dem Stack
Die in C# 9.0 eingeführten prägnanten Record-Typen, die bisher immer Klassen auf dem Heap-Speicher waren, gibt es jetzt auch als record struct für den Stack. Während bei einer record class die per Primärkonstruktor erzeugten Properties nach der Konstruktionsphase immer unveränderbar (Immutable) sind, hat man bei dem neuen Typus die Wahl zwischen Veränderbarkeit (record struct) oder Unveränderbarkeit (record readonly struct).
Record-Typen können die Methode ToString() mit dem Zusatz sealed versehen, um zu verhindern, dass erbende Record-Typen sie überschreiben.
Erweiterung bestehender Sprachfeatures
Interpolated Strings, die Microsoft schon in C# 6.0 eingeführt hatte, können C#-Entwickler nun auch für die Wertzuweisung an Konstanten verwenden. Voraussetzung ist allerdings, dass die verwendeten Platzhalter allesamt zuvor mit Konstanten befüllt werden.
Das Extended Property Pattern erlaubt bei Vergleichen statt { Prop1: { Prop2: pattern } } in C# 10.0 auch den Einsatz der kompakteren Punktnotation: { Prop1.Prop2: pattern }.
Das Feature "Mixed Deconstructions" gestattet eine Mischung von Zuweisung und Initialisierung in Tupel-Dekonstruktion: (x, int y) = point.
Bei Lambda-Ausdrücken können Entwickler das var-Schlüsselwort verwenden und dabei die neue Typherleitung für Lambdas einsetzen oder auch explizit einen Rückgabetyp angeben. Auch Annotationen (".NET-Attribute") für Parameter und Rückgabetyp von Lambda-Ausdrücken unterstützt die neue Version.
Die in C# 9.0 eingeführten Sourcecode-Generatoren können nun mit der neuen Schnittstelle Microsoft.CodeAnalysis.IIncrementalGenerator inkrementell und somit schneller arbeiten.
Ausblick: Fachartikel und Bezugsquellen
In der kommenden Woche wird auf heise Developer ein längerer Fachbeitrag veröffentlicht, der die Sprachfeatures von C# 10 ausführlich vorstellt. Wer sich vorab bereits umschauen und ausprobieren möchte: Version 4 der Roselyn-basierten Compilervariante ist erhältlich im .NET 6 SDK [18] oder eigenständig im NuGet-Paket [19] Microsoft.Net.Compilers. Zudem ist der C#-10-Compiler im am Montag erschienenen Visual Studio 2022 v17.0 enthalten.
URL dieses Artikels:
https://www.heise.de/-6262216
Links in diesem Artikel:
[1] https://www.heise.de/news/Microsoft-liefert-NET-6-aus-6261722.html
[2] https://github.com/dotnet/csharplang/blob/main/Language-Version-History.md
[3] https://www.heise.de/news/Microsoft-zeigt-erste-Plaene-fuer-NET-6-0-4974521.html
[4] https://www.heise.de/news/Microsoft-veroeffentlicht-erste-Preview-Version-von-NET-6-5058699.html
[5] https://www.heise.de/news/Ein-erster-Blick-auf-MAUI-in-NET-6-0-Preview-2-5078726.html
[6] https://www.heise.de/news/Blazor-laeuft-auch-auf-dem-Desktop-in-NET-6-Preview-3-6009808.html
[7] https://www.heise.de/news/BUILD-2021-NET-6-Preview-4-mit-Werkzeugen-fuer-MAUI-6054078.html
[8] https://www.heise.de/news/NET-6-Die-fuenfte-Preview-bringt-neue-Tools-und-eine-frische-Shell-fuer-MAUI-6110575.html
[9] https://www.heise.de/news/NET-6-Preview-6-hat-Webentwicklung-im-Fokus-6139067.html
[10] https://www.heise.de/news/NET-6-Preview-7-bringt-aktualisierte-Templates-und-APIs-6160674.html
[11] https://www.heise.de/news/Reif-fuer-die-Produktion-Erster-Release-Candidate-von-NET-6-6192682.html
[12] https://www.heise.de/news/NET-6-biegt-mit-RC2-auf-die-Zielgerade-ein-6215853.html
[13] https://net.bettercode.eu/
[14] https://net.bettercode.eu/#programm
[15] https://net.bettercode.eu/veranstaltung-13544-se-0-umstieg-von-.net-framework-auf-.net-6.html
[16] https://net.bettercode.eu/#programm
[17] https://www.heise.de/news/Visual-Studio-2022-laeuft-nun-mit-64-Bit-6260591.html
[18] https://dotnet.microsoft.com/download/dotnet/6.0
[19] https://www.nuget.org/packages/Microsoft.Net.Compilers
[20] mailto:sih@ix.de
Copyright © 2021 Heise Medien
Programmiersprache: Das fertige C# 10 läuft nicht nur auf .NET 6 - heise online
Read More
No comments:
Post a Comment