Beim NDC London schlug Mads Torgersen Pläne für die Zukunft der C#-Sprache vor. Es ist zu beachten, dass es sich lediglich um Pläne handelt und es keine Garantie dafür gibt, welche Version veröffentlicht wird. Damien Guard fasst diese Empfehlungen zusammen und analysiert sie kurz. Einige davon haben wir hier für Sie herausgesucht.
Schreibgeschützte Eigenschaften
Schreibgeschützte automatische Eigenschaften ermöglichen es Entwicklern, Eigenschaften und ihre Hintergrundfelder in einer Codezeile zu deklarieren.
public int X { get; } = x;
Statischer Typ mit Anweisung
Sowohl Visual Basic als auch Java ermöglichen den Import von Modulen (statische C#-Klassen) in Namespaces. Dadurch wird wiederholter Code vor häufig verwendeten statischen Funktionen wie „Math“ entfernt.
Primärer Konstruktor
Durch das Hinzufügen von Parametern nach dem Klassennamen müssen Entwickler nicht mehr explizit einen Konstruktor erstellen. Dadurch wird ausführlicher Code entfernt, wenn Konstruktorargumente in private Felder kopiert werden.
public class Point(int x, int y) { private int x, y; }
Eigenschafts- und Methodenausdrücke
Eigenschaftsausdrücke können einen Teil des Boilerplate-Codes eliminieren, der andernfalls für einfache schreibgeschützte Eigenschaften erforderlich wäre.
public double Distance => Math.Sqrt((X * X) + (Y * Y));
Das Gleiche gilt für Methodenausdrücke, natürlich können sie Parameter akzeptieren. Beachten Sie, dass parametrisierte Eigenschaften weiterhin nicht berücksichtigt werden. Dies kann für lange Zeit nur ein Alleinstellungsmerkmal von VB sein.
Funktionsparameter
Die meisten Entwickler verwenden heutzutage niemals Arrays, es sei denn, sie verwenden das Schlüsselwort params. Daher schlugen einige Leute vor, dass Parameter auch die IEnumerable-Schnittstelle unterstützen. In diesem Fall müssen auch andere Sprachen (z. B. Visual Basic) unterstützt werden. Es wurde auch vorgeschlagen, lokale Variablen mit dem Schlüsselwort out zu deklarieren. Beispiel:
int.TryParse("123", out int x);
Nullpropagation
Beim Umgang mit unordentlichen Daten müssen Entwickler häufig eine Reihe von Nullbeurteilungslogiken schreiben, bevor sie Eigenschaften lesen oder Methoden aufrufen. Die ?-Syntax hilft uns, diese Logik zu beseitigen, und die folgende Methode wird nur aufgerufen, wenn der vorherige Wert nicht leer ist.
var bestValue = points?.FirstOrDefault()?.X;
Wenn in diesem Beispiel „points“ leer ist oder „points.FirstOrDefault()“ leer zurückgibt, wird .X ignoriert und „leer“ zurückgegeben. Es kann auch in Verbindung mit ?? verwendet werden, um optionale Standardwerte bereitzustellen.
var bestValue = points?.FirstOrDefault()?.X ?? -1;
„Messaging“-Sprachen wie Objective-C und Smalltalk enthalten alle eine solche Syntax. Dies wird oft als problematisch angesehen, da eine Nullreferenzausnahme dort stillschweigend ignoriert wird, wo sie ausgelöst werden sollte.