.NET 8 und C# 12
.NET 8 und C# 12
Mit dem Release von .NET 8 und C# 12 gibt es viele spannende Neuerungen. In diesem Blogpost werden wir uns die neuen Features und Verbesserungen anschauen, welche die neuen Versionen mit sich bringen..NET 8
Die neue Version von .NET wurde im November 2023 veröffentlicht. Da es sich um einen LTS-Release (Long-Term-Support) handelt, wird sie für drei Jahre unterstützt werden, weshalb sich der Umstieg auch bei grösseren Projekten lohnt.
Blazor
Die Entscheidung für das passende Hosting Model fiel mit Blazor nicht einfach. Während Blazor Server schnelle Ladezeiten verspricht, kann man mit Blazor WebAssembly einfach Interaktivität in seine Website einbauen. Mit .NET 8 wurden die beiden Hosting Models zusammengeführt, was einem ermöglicht. Dadurch kann man für jeden Komponenten den Rendermode selbst bestimmen. Insgesamt gibt es vier Rendermodes:
- Static Server: Auf dem Server wird statisches HTML generiert und an den Client gesendet.
- Interactive Server: Das HTML wird auf dem Server gerendert. Kommunikationen für Interaktivität erfolgen über WebSockets.
- Interactive WebAssembly: Bei der ersten Anfrage sendet der Server die gesamte Client Applikation an den Client. Diese Daten werden gecached, damit weitere Requests schneller erfolgen. Das HTML wird auf dem Client gerendert.
- Interactive Auto: Die erste Anfrage erfolgt über Blazor Server. Im Hintergrund werden allerdings die Dateien für das Blazor WebAssembly heruntergeladen. Sobald der Download abgeschlossen ist, läuft es über das WebAssembly.
Man kann auch einen Standard-Rendermode für einen Komponenten festlegen. Das macht man ganz am Anfang seines Komponenten:
C# 12
Die Features von C# 12 können mit der neusten Version von Visual Studio 2022 oder mit dem .NET 8 SDK verwendet werden.Primary Constructors
Die neuen Primary Constructors dienen dazu, den Boilerplate Code zu minimieren. Parameter für eine Klasse oder einen Struct müssen dadurch nicht mehr in einem Constructor angegeben werden, sondern können direkt in der Deklaration der Klasse festgelegt werden.
Wichtig zu beachten ist, dass der Compiler keinen parameterlosen Constructor erstellt, wenn er einen Primary Constructor erkennt. Die Parameter sind über den gesamten Body der Klasse abrufbar.
Syntax für Collections
Die Syntax für die Initialisierung von Collections wurde ebenfalls vereinfacht. Sie ist ähnlich wie in der Programmiersprache Python:
Auch das Zusammenführen von Listen geht nun deutlich einfacher. Dafür verwendet man den sogenannten Spread-Operator "..".
Den Parametern von Lambda Expressions können nun Default Werte zugewiesen werden. Das funktioniert auf die selbe Weise wie bei sonstigen Funktionen.
Experimental Attribut
Mit dem neuen Experimental Attribut kann man Typen oder Methoden als Features kennzeichnen, die noch nicht noch nicht vollständig stabil oder möglicherweise nicht für den Produktiveinsatz geeignet sind. Der Compiler gibt dann ein Warning an, falls man ein experimentelles Feature verwendet.
Fazit
C# 12 und .NET 8 bringen viele neue nützlichen Features mit sich. Besonders die neue Syntax für Collections finde ich sehr interessant und hilfreich. In diesem Post habe ich nur einen Teil der neuen Features aufgezeigt, doch es gibt noch viele weitere interessante Neuerungen.
Quellen:
https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8
https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12
Kommentare
Kommentar veröffentlichen