Neu in .NET 10.0 [11]: Vereinfachungen bei Lambda-Ausdrücken in C# 14.0

In C# 14.0 lassen sich Parameter-Modifizierer in Lambda-Ausdrücken verwenden, ohne dabei den Datentyp benennen zu müssen.

vorlesen Druckansicht 1 Kommentar lesen
Straßenschild mit C#

(Bild: Pincasso/Shutterstock)

Lesezeit: 1 Min.
Von
  • Dr. Holger Schwichtenberg

In Lambda-Ausdrücken kann man in C# 14.0 jetzt Parameter-Modifizierer wie scoped, ref, in, out und ref readonly verwenden, ohne dabei den Datentyp benennen zu müssen.

Der Dotnet-Doktor – Holger Schwichtenberg
Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Ein Beispiel: Für den Delegate

delegate bool Extract<T>(string text, out T result);

musste man vor C# 14.0 Folgendes schreiben:

Extract<int> ExtractOld = (string text, out int result) 
  => Int32.TryParse(text, out result);

Videos by heise

Ab C# 14.0 können Entwicklerinnen und Entwickler im Lambda-Ausdruck die Nennung der Datentypen string und int weglassen, weil diese Datentypen aus dem Kontext bereits klar sind:

Extract<int> ExtractNew = (text, out result) 
  => Int32.TryParse(text, out result);

Das geht allerdings nicht, wenn ein variadischer Parameter mit params zum Einsatz kommt:

Add<int> AddOld = (out int result, params List<int> data) 
  => { result = data.Sum(); return true; };

Nicht möglich ist also folgende Verkürzung:

Add<int> AddNew = (out result, params data) 
  => { result = data.Sum(); return true; };

(rme)