Entdecken Sie, wie bevorstehende Änderungen Ihren Code verbessern und Ihr Leben als Entwickler ein wenig einfacher machen.
Details der mit Spannung erwarteten C# 12-Vorschau sind durchgesickert und geben einen Vorgeschmack auf kommende Funktionen, die die Sprache revolutionieren dürften. Diese Funktionen sind vielversprechend, um die Lesbarkeit des Codes zu verbessern, die Leistung zu optimieren und erweiterte Funktionen der Sprache freizuschalten.
Verbesserte Schalterausdrücke
C# 8 eingeführt grundlegende Schalterausdrücke Damit können Sie komplexe bedingte Logik prägnant und in lesbarer Form ausdrücken. C# 12 geht noch einen Schritt weiter und führt eine neue Mustervergleichssyntax für Schalterausdrücke ein, die das Schreiben ausdrucksstarken und prägnanten Codes noch einfacher macht.
Betrachten Sie den folgenden Codeausschnitt.
var Ergebnis = obj schalten
{
int ich Wenn ich > 0 => "Positiv",
int ich Wenn ich < 0 => "Negativ",
_ => "Null"
};
Dieser Code verwendet Schalterausdrücke, um zu bestimmen, ob eine Ganzzahl vorliegt
positiv, Negativ, oder null. In C# 12 können Sie diesen Code mithilfe der neuen Mustervergleichssyntax noch weiter vereinfachen:var Ergebnis = obj schalten
{
> 0 => "Positiv",
< 0 => "Negativ",
_ => "Null"
};
Mit dieser Syntax können Sie das weglassen Wenn Schlüsselwort und verwenden Sie relationale Operatoren direkt im Schalterausdruck.
Primärkonstruktoren für Klassen und Strukturen
Sie können jetzt in jedem beliebigen Primärkonstruktor erstellen Klasse oder struct (eine leichte Klassenalternative). Mithilfe von Primärkonstruktoren können Sie der Klassendeklaration Parameter hinzufügen und diese Werte im Klassenkörper verwenden.
Mit C# 9 wurden primäre Konstruktoren als Teil der Positionssyntax für Datensätze eingeführt. C# 12 erweitert diese auf alle Strukturen und Klassen.
Sie können die Parameter wie unten gezeigt in Klammern hinter den Typnamen setzen:
öffentlich Klasse Student(int Ausweis, Zeichenfolge Name, IEnumerable<Dezimal> Noten)
{
öffentlichStudent(int Ausweis, Zeichenfolge Name): Das(ID, Name, Enumerable. Leer<Dezimal>()) { }
öffentlichint Id => id;
öffentlichZeichenfolge Name { erhalten; Satz; } = Name. Trimmen();
öffentlichDezimal GPA => Noten. Beliebig()? Noten. Durchschnitt(): 4.0M;
}
Die Parameter eines primären Konstruktors gelten für den gesamten Körper des deklarierenden Typs. Sie können Eigenschaften oder Felder einrichten oder diese auch in Methoden oder lokalen Funktionen als Variablen verwenden. Sie können diese Parameter auch einem Basiskonstruktor bereitstellen.
Verbesserungen bei interpolierten Strings
Interpolierte Strings gibt es seit C# 6. In C# 12 können Sie jetzt mithilfe komplizierter Ausdrücke dynamische Werte für Zeichenfolgen erstellen.
int ich = 5;
Zeichenfolge Ausgabe = $"Der Wert von i ist {ich}, und sein Quadrat ist {i*i}.";
Konsole. WriteLine (Ausgabe);
Dieser Code gibt aus: „Der Wert von i ist 5 und sein Quadrat ist 25“.
Verwenden von Anweisungen für zusätzliche Typen
Mit C# 12 können Sie die Anweisung „using alias“ verwenden, um jedem Typ einen Alias zuzuweisen, nicht nur benannten Typen. Sie können semantische Aliase für Tupel, Arrays, Zeiger oder andere unsichere Typen erstellen.
Hier ein paar Beispiele:
verwenden Messung = (Zeichenfolge Einheiten, int Distanz);
verwenden UnitsInt = int?;
Beispiel für die Verwendung von Aliasen:
öffentlichLeereBerechnung(Messmessung)
{
// Methodenkörper
}
Verbesserungen des Lambda-Ausdrucks
C# 12 unterstützt Lambda-Ausdrücke, indem es Ihnen ermöglicht, die Standardwerte für Parameter zu definieren. Die Syntax ist identisch mit der anderer Standardparameter:
Zum Beispiel, (int inkrementierenTo = 5) => inkrementierenTo + 1 legt einen Standardwert von 5 für den Parameter „incrementTo“ fest, den der Lambda-Aufruf verwendet, wenn Sie ihm keinen Wert übergeben.
var inkrementWithDefault = (int inkrementierenTo = 5) => inkrementierenZu + 1;
incrementWithDefault(); // 6
incrementWithDefault(9); // 10
Darüber hinaus wurden viele weitere Verbesserungen an Lambda-Ausdrücken vorgenommen, um sie effektiver zu machen.
Zum Beispiel:
- Sie können jetzt komplexere Ausdrücke innerhalb von Lambda-Funktionen erstellen.
- Sie können jetzt Lambda-Ausdrücke in Ausdrucksbäume umwandeln, die komplexe Abfragen vereinfachen und die Leistung optimieren.
Asynchrone Streams
Mit dem neuen können Sie asynchrone Datenquellen durchlaufen Asynchrone Streams Funktion von C# 12. Dieser neue Iterator –warte auf jeden– hilft Ihnen bei der Iteration über einen Satz asynchroner Daten:
erwartenfür jede (var Artikel InGetItemsAsync())
{
Konsole. WriteLine (Art.Wert);
}
C# 12: Code mit aufregenden neuen Funktionen revolutionieren
Im Vorgriff auf C# 12 können Sie ein bahnbrechendes Update mit aufregenden neuen Funktionen erwarten. Diese Fortschritte, wie verbesserte Switch-Ausdrücke, primäre Konstruktoren und Verbesserungen an Lambda-Ausdrücken, weisen auf einen starken Fokus auf Code-Einfachheit, Flexibilität und Leistung hin.
C# 12 ist bereit, einen bedeutenden Schritt nach vorne zu machen und Ihnen das Schreiben ausdrucksstärkerer, effizienterer und leistungsfähigerer Codes zu ermöglichen.