Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C# 7: Neue Funktionen

Dekonstruktion

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Spannend beim Einsatz von Tuples ist auch die Dekonstruktion. Teilen Sie bestehende Klassen einfach in Teile auf und schreiben Sie das Ergebnis in ein Tuple.
08:14

Transkript

Was bei der Verwendung von Tuples noch spannend ist, ist Deconstruction. Bestehende Klassen können jetzt einfach in Teile aufgeteilt werden. Das Ergebnis wird in ein Tuple geschrieben . Sehen Sie wie mit Deconstruct, nicht zu verwechseln mit dem Destructor, eine Klasse in Teile aufgeteilt werden kann. In einen früheren Beispiel haben wir bereits eine Book-Klasse definiert. Diese instanziiere ich jetzt in die var b1 = new Book BookID = 1, Publisher =“Wrox Press“ , Title = “Professional C# 6“ . Diese Klasse definiert diese Properties. Book Id, Publisher und Title. Zusätzlich zu diesen Properties definiere ich jetzt auch eine Construct-Methode. Deconstruct (Out) (out int bookID, out string title, out string publisher). Und diese Variablen, bookId werden befüllt über diese Properties. = BookId, title = Title; und publisher =Publisher;. Jetzt kann ich beim Verwenden des Objektes ein Tuple lotsen. (var id, var title, var publisher) = b1;. Ich greife direkt auf diese Variablen zu, id, title und publisher. Start vom Programm und wir haben unsere Deconstruction. Was ist aber wenn ich einige Teile davon nicht brauche, zum Besipiel in einem Szenario nur den Titel. Dann deklariere ich Placeholders, Underscore für die Teile die ich nicht brauche. (_, var title1, _). Ich muss ja einen anderen variablen Namen verwenden, weil Title bereits im Scope ist. Oder ich lasse die Deklaration vom Typ weg, dann verwende ich die gleiche Variable Title hier = b1;. Und habe jetzt hier nur title im Zugriff. Bei diesen Placeholders brauche ich keinen Typ definieren, da kann ich auch mehrere verwenden. Das entspricht nicht einer variablen Deklaration wie wir sie bisher vielleicht verwendet haben, in Landexpressions wo wir den Parameter nicht genutzt haben. Ein Underscore, mussten aber weiterhin den Typ deklarieren und konnten das nur einmal verwenden. Das ist jetzt wirklich ein Placeholder Syntax für die Teile in der Deconstruction, die wir nicht brauchen. Starten wir das Programm und wir haben jetzt nur den Titel ausgegeben. Natürlich ist es auch möglich, statt diesen Placeholders eine eigene Methode zu definieren. "public void Deconstruct". Nur mit den Teilen, die wir in bestimmten Szenarien brauchen wie zum Besipiel out string title. Title wird befüllt mit Title. Diese Overloads sind möglich, weil diese Methode void zurückliefern muss und jeder Teil muss über Out Parameter definiert werden. Wenn wir bei Deconstruct selbst Tuples zurückliefern würden, wäre hier ein Overload nicht mehr möglich. Anstatt diese Placeholders zu verwenden, kann ich auch direkt in der Book-Klasse, Overloads definieren. Zum Beispiel Deconstruct-Methode mit zwei Parametern statt mit drei. Und hier befülle ich nur Title und Publisher. Jetzt schreibe ich das Ergebnis direkt in (var t, var p), für Title und Publisher = b1. Writeline, Title und Publisher. Statt dieser variablen Deklaration, kann ich natürlich auch hier nur das Tuple verwenden, tuple1 = b1. Und habe jetzt hier über die Variable Tuple1 den Zugriff alle Properties wie sie bei der Deconstruct-Methode definiert sind. BookId<, Publisherund Title. Falls Sie keine Möglichkeit haben einen bestehenden Typ zu modifizieren, oder ganz einfach Deconstruct-Methoden nicht in einen Typ implementieren wollen können Sie stattdessen auch eine Extension-Klasse schreiben. public static class BookExtensions, mit Static Members, "public static void Deconstruct". Und das ist jetzt eine Extension-Methode für (this Book book, out int book id, out string title, out string publisher). In der Implementierung befülle ich jetzt BookId über book.bookId title über book.title und publisher Jetzt ist es genauso wie vorhin möglich, dieses Overload fehlt mir noch, Deconstruct zu nutzen. Ganz egal ob Deconstruct jetzt in der Klasse selbst implementiert ist, oder mit Extension-Methoden. Starten wir das Programm und wir haben das Ergebnis wie vorhin. Deconstruction erlaubt einen praktischen Syntax um aus Klassen Tuples zu erzeugen. Wir brauchen einfach eine Deconstruct-Methode und können damit Teile von Klassen in Tuples umwandeln. Wenn wir bestehende Typen nicht modifizieren wollen mit dieser Deconstruct-Methode, auch mit Etension-Methoden.

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!