Rechercher dans ce blog

Tuesday, November 9, 2021

Programmiersprache: Das fertige C# 10 läuft nicht nur auf .NET 6 - heise online

Programmiersprache: Das fertige C# 10 läuft nicht nur auf .NET 6

Dr. Holger Schwichtenberg

(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:

Überblick über die Sprachfeatures in C# 10 auf GitHub (Abb. 1)

(Bild: GitHub [2])

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.

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.

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.

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

Adblock test (Why?)


Programmiersprache: Das fertige C# 10 läuft nicht nur auf .NET 6 - heise online
Read More

No comments:

Post a Comment

One UI 5.1: Samsung kündigt Update-Start für ältere Galaxy-Smartphones an, los geht es u.a. mit Galaxy S20, S21 und S22 - Notebookcheck.com

Nachdem es vor wenigen Tagen bereits inoffizielle Informationen zum Rollout von Samsungs One UI 5.1 für die ersten Modelle jenseits der ne...