Neue Funktionen in C # 7

C # 7 bietet viele neue Funktionen mit besonderem Augenmerk auf einfache Codierung und verbesserte Leistung. Es konzentriert sich stark auf den Datenverbrauch, die Vereinfachung des Codes und die Leistung und soll den Schmerz beseitigen, zusätzlichen Code auf mehrere Arten schreiben zu müssen.

Hier ein kurzer Blick auf die Neuerungen und Verbesserungen in C # 7.

  • Unterstützung für lokale Funktionen
  • Verbesserte Unterstützung für Tupeltypen
  • Datensatztypen
  • Mustervergleich
  • Nicht nullbare Referenztypen
  • Unveränderliche Typen
  • Bessere Unterstützung für unsere Variablen

Bessere Unterstützung für unsere Variablen

Die Möglichkeit, eine out-Variable direkt am Verwendungsort zu deklarieren, ist eine großartige neue Funktion in C # 7. Hier ist ein Beispielcode-Snippet, das dies veranschaulicht.

public void Save(Product p)

{

    p.SaveData(out int x);

    //Usual code

}

Ein guter Ort, um Variablen zu verwenden, befindet sich in Ihrem try-Block. Verwenden Sie einfach eine Boolean out-Variable, bei der ein Rückgabetyp von true anzeigt, dass die Operation erfolgreich ist, andernfalls false.

Mustervergleich

C # 7 bietet eine hervorragende Unterstützung für den Mustervergleich. Sie können den Mustervergleich für jeden Datentyp verwenden, auch für benutzerdefinierte Datentypen. Darüber hinaus können Sie den Mustervergleich nutzen, um Werte aus einem Ausdruck zu extrahieren. Hier ist ein Code-Snippet, das den Mustervergleich bei der Arbeit veranschaulicht!

object obj = "This is a demonstration of pattern matching in C# 7";

if (obj is string str)

{

    Console.WriteLine(str);

}

Unterstützung für lokale Funktionen

Möglicherweise benötigen Sie häufig eine Hilfsfunktion, die nur einmal verwendet werden muss - möglicherweise nur in einer Methode. Sie können solche Funktionen jetzt in einer anderen Funktion deklarieren. Solche Funktionen sind als lokale Funktionen bekannt. Im Wesentlichen können Sie durch die Unterstützung lokaler Funktionen Methoden innerhalb eines Blockbereichs deklarieren. Obwohl dies in früheren Versionen der C # -Sprache mit Func- und Action-Typen mit anonymen Methoden möglich war, gab es nur wenige Herausforderungen. Sie unterstützten keine Generika, Parameter und Ref- und Out-Parameter.

Bessere Unterstützung für Tupel

Ein Tupel ist eine temporäre Gruppierung von Werten. Es ähnelt einer POCO-Klasse, wird jedoch im laufenden Betrieb erstellt. Der Hauptvorteil der Verwendung eines Tupels besteht darin, dass eine Methode mehrere Werte zurückgeben kann. Möglicherweise möchten Sie ein Tupel verwenden, um eine Reihe heterogener Daten darzustellen und eine einfache Möglichkeit zum Zugriff auf diese Daten bereitzustellen. Tupel sind nichts Neues und gibt es schon seit geraumer Zeit. Sie unterstützen Tupel in den Programmiersprachen F # und Python. Sie können ein Tupel verwenden, um eine geordnete, endliche Folge von unveränderlichen, endlichen Folgen von homogenen oder heterogenen Daten fester Größe zu speichern.

Sie haben jetzt auch Unterstützung für Tupel-Literale und Tupel-Dekonstruktion. In C # 7 wird ein Tupel als Werttyp betrachtet. Daher ist es ein veränderlicher Typ und in Bezug auf die Leistung viel effizienter.

Nicht nullbare Referenztypen

Nullable-Werttypen wurden erstmals in C # 2.0 eingeführt. Der nicht nullbare Referenztyp ist genau das Gegenteil dieser Funktion. Im Wesentlichen wird ein nicht nullbarer Referenztyp verwendet, um einen Referenztyp zu bezeichnen, der garantiert nicht null ist. So wird in C # 7 ein nicht nullbarer Referenztyp deklariert:

string! str; //This is a non-nullable reference type

Bessere Unterstützung für unveränderliche Objekte

Ein unveränderliches Objekt ist ein Objekt, dessen Zustand nach seiner Erstellung nicht mehr geändert werden kann. Dies macht einen unveränderlichen Objekt-Thread sicher. Angenommen, Sie erstellen eine Klasse, die eine Eigenschaft enthält, die einen Getter, aber keinen Setter hat. Ja, anscheinend scheint eine Instanz der Klasse unveränderlich zu sein. Wenn jedoch zu einem späteren Zeitpunkt jemand einen Setter für dieselbe Eigenschaft hinzufügt, geht die Unveränderlichkeit verloren, nicht wahr?

Genau hier setzt die bessere Unterstützung für unveränderliche Typen an. Mit C # 7 können Sie eine neue Instanz basierend auf einer anderen Instanz erstellen. So kann dies erreicht werden.

var firstObject = new Employee(101);

var secondObject = firstObject with {EmployeeId = 102};

Datensatztypen

Mit Datensatztypen können Sie einen Typ nur mit Eigenschaften erstellen. Im Wesentlichen ist ein Datensatztyp ein Datentyp, der nur Eigenschaften enthält. Das folgende Codeausschnitt zeigt, wie ein Datensatztyp deklariert werden kann.

 class Rectangle(int Height, int Breadth);