Tuples, Pattern Matching und CO. - das sind die neuen Features in C#7

C#7: Das steckt in der neuen Sprachversion
Keine Kommentare

C# wird immer umfangreicher: Mit C#7 ist eine neue Sprachversion im Anmarsch, die zahlreiche neue Funktionen mit sich bringt. Zu den Highlights zählen die sogenannten Tuples und das Pattern Matching, daneben sind allerdings noch einige weitere große und kleine Änderungen geplant. Das Geheimnis darum, welche das sind, lüftet das .NET-Engineering jetzt in einem aktuellen Blog-Beitrag.

Das mit C#7 zahlreiche neuen Sprachfunktionen eingeführt werden, ist keine Frage, doch um welche handelt es sich dabei eigentlich genau? Das verrät das .NET-Engineering-Team nun ausführlich in einem aktuellen Blog-Beitrag.

Ein Großteil der Features ist bereits in der vierten Vorschauversion von Visual Studio „15“ verfügbar, ebenfalls in der Preview. Mit den Neuerungen fokussiert Microsoft insbesondere den Datenverbrauch, Code-Vereinfachungen und Performance-Verbesserungen.

C#7 – das steckt drin in der neuen Sprachversion

Ein Feature-Highlight der neuen Sprachversion sind die sogenannten Tuples, die ein leichteres Verteilen verschiedener Wertegruppen ermöglichen sollen. Das ist vor allem dann hilfreich, wenn man mehrere Werte einer Methode ohne Verwendung von Parametern zurückgeben will. Daneben gibt es natürlich noch einige weitere große wie kleine Änderungen, nachfolgend ein Überblick.

Kostenlos: Azure-DevOps-Spickzettel

Jetzt herunterladen und mit wenigen Befehlen das Kommando über Azure DevOps übernehmen!

Download for free

Out-Variablen und Pattern Matching

Neu in C#7 sind unter anderem die out-Variablen, die Variablen direkt deklarieren, sodass die Nutzung von out-Parametern in Zukunft flüssiger über die Bühne gehen soll. Außerdem wird das sogenannte Pattern-Matching eingeführt, mit dem sich u.a. die Inhalte von Werten deklarativ testen lassen. Beispiele für Patterns in C#7 sind:

  • Constant-Patterns der Form c, die testen, ob die Eingabe gleich c ist.
  • Type-Patterns der Form T x, die testen, ob die Eingabe T entspricht und wenn ja, den Wert der Eingabe einer neuen Variablen x für T übergeben.
  • Var-Patterns der Form var x, die einfach den Wert der Eingabe einer neuen Variablen x zuweisen, mit dem gleichen Typ der Eingabe.

Das ist aber nur der Anfang, Patterns sind eine neuen Form von Sprachelementen in C#, daher ist die Liste bisher eher kurz. Künftig will das Entwicklerteam nach und nach weitere Patterns ergänzen.

In C#7 sollen beispielsweise zwei bestehende Sprachkonstrukte mithilfe von Patterns optimiert werden:

  • is expressions can now have a pattern on the right hand side, instead of just a type
  • case clauses in switch statements can now match on patterns, not just constant values

Switch Statements mit Patterns

Darüber hinaus plant das Team, das Switch-Statement zu verallgemeinern, sodass:

  • man zu jedem Type wechseln kann (nicht nur Primitive-Types)
  • Patterns als Case-Clauses genutzt werden können
  • Case-Clauses ergänzende Bedingungen an die Patterns stellen können

Nachfolgend ein einfaches Beispiel:

switch

Quelle: Microsoft

Lokale Funktionen

Manchmal ist eine Helper-Funktion nur innerhalb einer einzelnen Methode sinnvoll, die diese nutzt. Von nun an sollen sich solche Funktionen auch innerhalb anderer Function-Bodies als local function deklarieren lassen:

local

Quelle: Microsoft

Async Return Types

Bisher müssen Async-Mehoden in C# entweder void, Task oder Task <T> zurückgeben. In C#7 sollen auch andere Types so definiert werden können, dass sie von einer Async-Methode zurückgegeben werden können. Das Team erläutert hierzu:

For instance we plan to have a ValueTask struct type. It is built to prevent the allocation of a Task object in cases where the result of the async operation is already available at the time of awaiting. For many async scenarios where buffering is involved for example, this can drastically reduce the number of allocations and lead to significant performance gains.

Weiterführende Informationen

Alle weiteren Details und Informationen dazu, welche der genannten Funktionen bereits in Visual Studio 15 Preview 4 verfügbar sind, finden sich im .NET-Blog. Grundsätzlich befinden sich alle Features aktuell noch in der Entwicklung, Verbesserungsvorschläge und Fehlerhinweise sind deshalb ausdrücklich erwünscht und können über den „Send-Feetback-Button“ im oberen Bereich des Visual-Studio-Fensters eingereicht werden. Wer sich für den Design-Prozess hinter C#7 interessiert, findet die Design-Notes auf der Roslyn-Github-Seite.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -