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

Tuples: neue Definition und ValueTuple

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit Tuples fassen Sie unterschiedliche Datentypen zusammen. Eigentlich gibt es sie schon seit .NET 4.0. Lernen Sie den Unterschied zwischen Tuple und dem neuen Typ ValueTuple sowie die neue Syntax in C# 7.0 kennen.
10:12

Transkript

Mit Tuples können wir unterschiedliche Datentypen zusammenfassen. Tuples gibt es eigentlich schon seit .NET 4.0. Neu ist die Syntax mit C# 7 als auch der neue Typ ValueTuple. Wie unterscheidet sich Tuple von ValueTuple? Wie sieht die neue Syntax mit C# 7 aus? Dafür habe ich diese Methode TupleSample vorbereitet und erzeuge darin aber zuerst einen Tuple wie wir ihn von .NET 4.0 kennen. Tuple ist ein generic oder mehrere generic Typen verwenden wir int, string und int Die generic Typen gehen von T1, T2, T3, T4 bis zu 7 und TRest, dadrin kann ich dann selbst wieder einen neuen Tuple verpacken und kann damit einen Tuple praktisch endlos groß machen. Dieser Tuple besteht jetzt aus drei Members: T1 = und dieser Tuple wird erzeugt über die Methode Tuple.create() Mit der Tuple.create Methode, erzeuge ich jetzt einen Tuple, wie er links deklariert ist. Das heißt, einen Integer, einen String und einen Integer. Auf die einzelnen Members des Tuples, kann ich über Properties der Tuple Klasse zugreifen. Item1; liefert mir einen Integer, den ersten Integer. int i1 = string s1 = t1.Item2; und int i2 = t2.Item3; Diese Namen sind nicht sehr sprechend. Deshalb hat sich dieser .NET 4.0 Tuple Typ auch nicht sehr weit durchgesetzt. Neu ist die Syntax mit C# 7. In runden Klammern kann ich die ganzen Members deklarieren wie zum Beispiel (var s, var i) Und ich mache eine Zuweisung auf der rechten Seite mit einem Tuple Literal. ("magic ", 42); Noch habe ich hier einen Compiler Fehler. A predefined type 'ValueTuple' ist nicht definiert. Das kann ich lösen, indem ich ein NuGet Package für ValueTuple hinzufüge. System.ValueTuple install. OK Accept. Dieses ValueTuple Assembly ermöglicht mir auch mit älteren .NET Projekten, die auf ältere Versionen vom .NET Framework setzen, die neue Tuple Syntax zu verwenden. Ich brauche nur die neue Version von Compiler und dieses ValueTuple Package. und schon ist der Compiler Fehler weg. Jetzt kann ich direkt auf diese Variable s einen String und die Variable i, da gebe ich hier neben dem Inhalt dieser Variable auch die Information zum Typ mit. i.GetType().Name "); dass Sie sehen, welcher Typ jetzt in i und welcher Typ in s steckt. s.GetType().Name)"; Start! Und dieses TupleSample liefert jetzt für magic einen String und 42 ist ein Int32. Statt das Ergebnis eines Tuple Literals direkt in Variablen zu schreiben, s und i, kann ich auf der linken Seite auch einen Tuple verwenden. (string s, int i) t2 = ("magic", 42); Wenn ich diese Syntax verwende, kann ich auf der linken Seite nicht var schreiben, dann brauche ich diese konreten Typen. In dieser Variante kann ich var schreiben oder die Typen, in dem Fall string und int. Wie kann ich jetzt auf die Members von t2 zugreifen? Write.Line(t2.s); Write.Line(t2.i); Das, was ich hier deklariert habe, sind in Wirklichkeit Public Members dieses Tuples. Public Fields. Hinter dieser Tuple Deklaration steckt ValueTuple. In dem Fall ValueTuple t3 = (); Und da kann ich genauso eine Zuweisung machen mit dem Tuple Literal. Nur was ich mit diesem ValueTuple, mit dieser Deklaration nicht bekomme, ist diese schönen entsprechenden Namen. Hier habe ich genauso Item1, Item2 wie wir sie vorher bei der Tuple Klasse hatten. Neu ist, ValueTuple ist eine struct, ein Value-Type während Tuple eine Klasse, ein Referenz-Typ ist. Bei Tuple sind die Items nicht änderbar. t1.Item1, da habe ich nur einen Get Accessor. Beim ValueTuple sind die einzelnen Items änderbar. Ich kann hier im t2.s einen neuen String hineinschreiben. Tatsächlich steckt ein Public Field im ValueTuple. Nach diesen einfachen Beispielen, die in Wirklichkeit die ganzen Geheimnisse der Tuples zeigen, noch etwas Sinnvolleres. Ich definiere eine Methode, die einen Tuple zurückliefert. (int Result, int Remainder) Das soll eine public static () Methode sein und diese Methode heißt Divide(int val1, int val2) Das Result erzeuge ich über int result = val1 / val2; int remainder = val1 % val2; Und zurückgeliefert wird ein Tuple mit einem Tuple Literal. return (result, remainder); Jetzt rufe ich diese Methode auf (var result, var remainder) und schreibe das Ergebnis in diese Variable = Divide (9, 2); Das Ergebnis wollen wir auf der Konsole sehen. ("$result: {result}, remainder: remainder"); Start! Wie erwartet, ist das Ergebnis 4 und 1. Statt diese Deklaration des Tuples zu nutzen, verwende ich jetzt var t3 für ein ValueTuple. var t3 = Divide(7, 3) Wie kann ich jetzt darauf zugeifen? ("$result: t3. Ich habe hier Properties Result, Remainder in Wirklichkeit keine Properties, sondern Public Fields mit den Namen wie sie hier in der Methode deklariert sind. Result, Remainder Start der Applikation! Und das ist unser neues Ergebnis. Tuples haben eine einfache Syntax. Mit runden Klammern fassen wir die einzelnen Members, die Teil des Tuples zusammen. Auf der rechten Seite verwenden wir ein Tuple Literal, um Tuples zu erzeugen und wie beim alten .NET 4.0 Tuple, kann ich auch hier eine bliebige Anzahl an Parametern nutzen. Auch in ValueTuple gibt es T1 bis T7 plus TRest, was mit dieser Syntax automatisch aufgelöst wird. Die neuen Tuples, Syntax in C# integriert. Damit wird das Ganze ansprechender, damit werden Tuples sicher auch mehr genutzt. Und wir haben jetzt die ValueTuples, eine struct statt der Tuple Klasse, einer Referenz.

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!