C# ist am 8.11.2022 zusammen mit .NET 7.0 erschienen.
C# 11.0 wird von Microsoft offiziell nur in Verbindung mit .NET 7.0 unterstützt. C# 11.0 lässt sich aber auch auf älteren .NET-Versionen nutzen, für diese Konstellation bietet Microsoft jedoch keinen technischen Support.
Liste der wesentlichen Neuerungen in C# 11.0Datentypen
Datentypaliases nint und nuint,
Zeilenumbrüche innerhalb von Interpolationsausdrücken
Pattern Matching für Listen und Teilmengen (List Pattern und Slice Pattern)
Pattern Matching für Span<char> und ReadonlySpan<char>
Generische Mathematik
Details zu C# 11.0C# 11.0 bietet drei Neuerungen für Zeichenketten: Mit Raw Literal Strings gibt es eine neue Möglichkeit für die Festlegung von Zeichenketten ohne Steuerzeichen, aber mit Zeilenumbrüchen. Ebenso dürfen Entwickler nun Zeilenumbrüche innerhalb von Interpolationsausdrücken in Zeichenketten nutzen. Mit dem Suffix u8 wandelt sich eine Zeichenkette zu einem Byte-Array von UTF8-codierten Zeichen.
Typdeklarationen dürfen in C# 11.0 den Sichtbarkeitsmodifizierer file besitzen. Diese Typen sind dann nur innerhalb der aktuellen Datei sichtbar. In Strukturen initialisieren sich alle nicht explizit initialisierten Felder und Properties automatisch mit Standardwerten. Bei Klassen-, Struktur- und Record-Definitionen ist in Properties und Fields nun der Modifizierer required verwendbar, was die Entwickler zum Setzen dieser Daten im Konstruktor oder Objekt-Initialisierer zwingt. In Schnittstellendefinitionen ist der Zusatz static abstract erlaubt, was die Definition von Operatorüberladungen in Schnittstellen erlaubt. Die neuen Schnittstellen für generische Mathematik im Namensraum System.Numerics (z.B. Inumber<Tself>, IAdditionOperators<Tself,Tother,Tresult> und ILogarithmicFunctions<Tself>), mit denen mathematische Operation unabhängig vom Zahlentyp implementierbar sind, basieren auf Operatoren in den Schnittstellen. Attributdefinition dürfen auch Typparameter besitzen: public class GenericAttribute<T> : System.Attribute { }
Die Schlüsselwörter nint und nuint bilden neue Aliase für die Typen System.IntPtr und System.UIntPtr. Die .NET-Klassenbibliothek bietet neue Ganztypzahlen mit zwei Bytes (System.Half) sowie 16 Bytes (System.Int128 und System.UInt128).
Bei den Operatoren hat Microsoft das Pattern Matching um den Vergleich mit Listen erweitert. Auch das Extrahieren von Elementen aus Listen ist möglich. Zudem gibt es eine neue Art der Deklaration generischer mathematischer Operationen, die dann mit beliebigen Zahlentypen verwendet nutzbar sind.
Für die funktionale Programmiersprache F# gibt es weniger Neuerungen [https://devblogs.microsoft.com/dotnet/announcing-fsharp-7/]. Auch dort ist in Schnittstellen nun static abstract möglich. Die Syntax von Statically Resolved Type Parameters hat Microsoft vereinfacht. Bei der Nutzung von C#-Assemblies in F# beachtet F# die Anforderung required.
Langjährige Erfahrungen bei der Entwicklung von Desktop-, Web- und Mobil-Anwendungen sowie dem Betrieb von Software geben die Top-Experten von www.IT-Visions.de gerne an Sie weiter.
Sie brauchen Unterstützung bei der Entwicklung Ihrer Software? www.IT-Visions.de entwickelt Ihre Anwendungen oder einzelne Module und übergibt Ihnen den Quellcode mit Dokumentation.
Ihren Entwicklern oder Admins fehlt es an Know-how und Erfahrung?
Ihr Projekt läuft nicht wie geplant? Oder Sie wollen schon im Vorhinein verhindern, dass es zu Problemen kommt? Unsere Experten sind für Sie da (Vor Ort oder per Webkonferenz)!