Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C# 7: Neue Funktionen

Neue Möglichkeiten mit Lambda Expressions

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Lambda Expressions gibt es seit C# 6.0 auch bei Methoden und Properties. C# 7.0 erweitert die Syntax erneut und ermöglicht Lambda Expressions in vielen weiteren Szenarien. Der Trainer zeigt Ihnen hier die neuen Möglichkeiten, aber auch Einschränkungen auf.
08:52

Transkript

Nachdem sich C# Entwickler an Lambda Expressions gewöhnt haben, gibt es seit C# 6 Lambdas auch bei Methoden und Properties. Mit C# 7 wird der Syntax um Lambda Expressions in vielen weiteren Szenarien ermöglicht. Sehen Sie die neuen Möglichkeiten und Einschränkungen, die es dabei gibt. Im letzten Beispiel hatten wir lokale Funktionen beschrieben. Diese Lokale Funktion Add wird mit einem einzigen Statement implementiert. Das kann ich damit jetzt auch mit einer Lambda Syntax schreiben. Ich wähle den Lambda Operator und liefere direkt x + y + z zurück, erspare mir die geschwungenen Klammern und das Return Statement. Um Lambda Expressions auch im Konstruktor zeigen zu können, erzeuge ich eine neue Klasse "Person". Diese Klasse soll immutable sein und zwei Readonly Fields beinhalten. "firstName" und "lastName". Für diese zwei Fields gibt es Public Properties, "firstName" wo in einem Get Accessor diese firstName Variable zurückgeliefert wird. Diese Syntax für Properties nur mit Get Accessor gibt es seit C# 6. Und entsprechend auch "lastName" wo wir auf das lastName Field zugreifen. Beide Read Only Fields möchte ich im Konstruktor initialisieren. Im Konstruktor Person dieser Klasse verwende ich jetzt nur eine Variable name und über diese eine Variable name sollen sowohl die Felder firstName als auch lastName initialisiert werden. Und das mit einem Statement in einer Lambda Expression. Dafür rufe ich die Split-Methode von der String Klasse auf, und trenne die zwei Namensteile über einen Blank. Um jetzt dieses String Array, das ich bekomme, in firstName und lastName zu schreiben, erzeuge ich dann noch einen Helper, eine Extension Klasse "StringCollectionExtensions." Extensions Klassen sind static. Und diese Klasse beeinhaltet eine Methode public static void MoveElementsTo() Das soll eine Extension werden für IList Und diese Collection jetzt aufteilen in Output Parameter out string S1 und out string S2. Wenn ich in diesem Szenario jetzt einen falschen Collection Count bekomme, nämlich etwas !=2, liefere ich einen Fehler zurück throw new ArgumentException("bad collection count") Wenn der Count passt, schreibe ich in die Variable S1 das erste Element dieser Collection und in S2 das zweite Element. Um diese Extension Methode verwenden zu können, verwende ich diesen namespace Helpers in der Klasse Person. using und kann jetzt direkt auf das Ergebnis der Split-Methode die MoveElementTo() Methode aufrufen und schreibe jetzt in firstName den ersten Teil und in lastName den zweiten Teil von dieser Name Variable. Konstrukt ist fertig. Um das zu testen, erzeuge ich in dieser ExpressionsEverywhere Methode ein neues Person Objekt im namespace Models, initialisiere das mit Katharina Nagel. Und für die Ausgabe greife ich jetzt nur auf die firstName Property zu. Start! Im Ergebnis sehen wir jetzt tatsächlich das Ergebnis Katharina. Dieser String wurde in einen Konstruktor mit Lambda Syntax aufgesplittet. Konstruktor und Destruktor sind jetzt nicht die einzigen Möglichkeiten für diese Lambda Syntax. Ich kann diese Sytax auch in Property Accessors verwenden. Dafür erzeuge ich eine neue Buchklasse. Book Und diese Book Klasse bekommt eine Auto Property. BookId und eine Full Property, die ich mit dem Code Snippet propfull erzeuge. string _publisher Publisher Bei der Full Property erzeugt der Code bei beiden einen gleichen Code. Auch bei Auto Property wird ein lokales Field erzeugt, bei der Property ein Get und Set Accessor, wo wir auf diese Field zugreifen lesend und schreibend. Diese lange Syntax können wir jetzt auch etwas kürzer schreiben. get mit Lambda Operator, wir ersparen und das Return, liefern direkt den Publisher zurück, set = _publisher = value; Es gibt hier diese noch kürzere Variante der Auto Properties. Allerdings in einigen Szenarien brauchen wir hier eine andere Implementierung als die Default Implementierung. Zum Beispiel wenn wir INotifyPropertyChanged implementieren müssen. Dafür verwende ich eine Basisklasse. BindableBase Diese Basisklasse implementiert "INotifyPropertyChanged" mit einer SetProperty Methode, wo eben Change Notification durchgeführt wird. Zurück zur Buchklasse. In der Buchklasse definiere ich jetzt ein Title Field mit einer Title Property. Get Accessor, wir liefern direkt diese Title Property zurück. Set Accessor, darin rufen wir jetzt SetProperty von der Basisklasse, von bindableBase auf. (ref _title, value) Und damit ersparen wir uns einiges im Verlgleich zur alten Syntax. Auch wenn wir Custom Events implementieren, statt der Kurzform die Langform, "private EventHandler _someEvent;" "public event EventHandler Some Event" Mit einer Custom Add und Remove Implementierung können wir jetzt diese Lambda Syntax verwenden. add = _someEvent += value; und remove = someEvent -= value; Expressions können wir jetzt tatsächlich überall verwenden. Bei C# 6 waren Expressions möglich bei Methoden, Expression Bodied Methods und bei Expression Bodied Properties. Bei C# 7 haben wir jetzt auch noch lokale Funktionen, Constructors, Destructors Property Accessors und Event Accessors.

C# 7: Neue Funktionen

Entdecken und nutzen Sie die mit der neuen Version 7 hinzugekommenen Features der mächtigen Programmiersprache C#.

1 Std. 34 min (21 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
C# C# 7
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.03.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!