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

C# 7: Neue Funktionen

Pattern Matching

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Ein weiteres mächtiges Feature von C# 7.0 ist das Pattern Matching. Der Ursprung liegt wiederum in der funktionalen Programmierung. Lernen Sie nun, Const-, Type- und Var-Patterns zusammen mit dem is-Operator und dem switch-Statement einzusetzen.
11:28

Transkript

Ein weiteres mächtiges Feature von C# 7, wieder eines das aus der funktionalen Programmierung kommt, ist Pattern Matching. Hier behandeln wir Const-, Type- und Var-Patterns und wie diese beim is-Operator und dem switch-Statement zum Einsatz kommen. In diesem Beispiel deklariere ich ein Array von Objects. Und diese Objects befülle ich mit unterschiedlichen Daten, zum Besipiel null, 42 für eine Interture, erzeuge eine neue Person, "Matthias Nagel" und eine weitere, "Stephanie Nagel". Es ist zwar nicht schön, besser wäre es type-safe arrays zu haben, wo wir zum Beispiel nur Personen darin haben oder nur Interture. In der Realität bekommen wir aber oft unterschiedliche Daten, die wir dann unterschiedlich behandeln wollen. Zum Beispiel aus einer Datenbank kommen einmal diese oder jene Daten von einem Server und das können wir nicht unbedingt vorbestimmen. Und gerade mit dem Ansatz der funktionalen Programmierung passiert es, dass wir Daten von Funktionalität trennen und die gleiche Funktionalität vielleicht auf unterschiedlichen Daten durchführen wollen. Deshalb mache ich jetzt ein foreach-Statement, wo wir alle diese Daten iterieren und für jede dieser Daten rufe ich diese Methode IsPattern auf und gebe diese Daten mit. Jetzt habe ich diese Methode IsPattern und verwende darin Pattern-Matching, if (item is null). Bisher haben wir hier vielleicht den == Operator verwendet und in dem Fall vielleicht ein throw new ArgumentNullExeption generiert, (nameof(item)). Jetzt verwende ich diesen neuen Pattern if (item is null). Nachdem ich da wirklich mal null bekomme generiere ich keine Exeptions, sonst würde das Programm hier stoppen und stattdessen schreibe ich "it's a const pattern – null" auf die Konsole. Null-Vergleich ist ein Const-Pattern. if (item is 42), kann genauso mit einer Konstanten vergleichen, wie 42. “It's a const pattern – 42“. Const ist einer der neuen Pattern von C# 7, mit einer Erweiterung des Operators. Ein weiterer Pattern ist der Type-Pattern. if (item is int). Bei diesem Type-Pattern deklariere ich jetzt gleich eine Variable i vom Typ int, die hier im Scope ist. it's a type pattern, value: Wertevariable i und dann habe ich bei dieser Variablen i jetzt Zugriff auf alle Members, die es beim int gibt. Wie zum Beispiel gettype().Name. if (item is Person p), wenn es sich bei dem item um eine Person handelt, schlägt dieser Pattern zu. Ebenfalls ein Type-Pattern. Und ich habe hier Zugriff auf alle Members dieser Person-Klasse, p.FirstName zum Beispiel. Da kann ich auch komplexere Bedingungen definieren, zum Beispiel if (item is Person p2 && p2.FirstName.StartsWith, wenn der Vorname mit "Ma" startet, dann soll dieser Pattern zuschlagen. it's a Person starting with Ma p2.FirstName. Cons-, Type-Patterns sind zwei der Patterns, ein weiterer Pattern ist der Var-Pattern. if (item is var), eine Variable dazu x, Console.WriteLine(“it's a var pattern). Und hier noch eine Ausgabe von der Variablen x. Starten wir das Programm. Wir haben einen Const-Pattern erhalten für das Übergeben mit null als item. Der Var-Pattern trifft hier auch zu. Ein Const-Pattern für 42, Type-Pattern,int 42, 42 ist auch ein Interture. Hier schlägt auch der Var-Pattern zu. Wir haben eine Person, Matthias bekommen. Personen die mit Ma starten, Matthias, ebenfalls Var-Pattern. Person Stephanie, Var-Pattern. Der Var-Pattern trifft ganz einfach immer zu. Neben dem is-Operator, der erweitert wurde, wurde auch das switch-Statemen erweitert. Dafür mache ich eine weitere foreach-Schleife, item in data und rufe hier die Methode SwitchPattern auf und gebe diese item als Argument mit. Switch_on item, case: 42, it's 42, a const pattern“. Wie vorhin gibt es hier ebenfalls Const-Pattern, Var-Pattern und Type-Pattern. Case null, "it's null", break; case int i: "it's an int". Und ich habe hier gleich die Variable i definiert auf die ich zugreifen kann. Es ist ein Interture. break; case Person p:, "it's a person, FirstName". break; Und bei dieser Person, beim case können wir auch ein when definieren. when p.FirstName.StartsWith("Steph"). Das when Keyword wird bei C# 6 bereits bei Exeption-Handling für das Exeption-Filtering genutzt. Das gleiche Keyword können wir jetzt im Switch-Statement für Pattern-Matching verwenden. case var x, ("it's a var pattern"). Und schließlich default. Ich lasse dieses foreach mit dem is-Pattern mal aus. Starten wir das Programm und haben jetzt unsere Switch Ergebnisse: null, 42, var pattern und person Stephanie. Wie wir hier sehen ist dieser Var-Pattern nicht so oft aufgerufen worden wie vorhin. Die Ursache ist, sobald ein case getroffen ist, gibt es ein break und wir suchen nicht nach weiteren cases. Die Reihenfolge ist hier wichtig. Wenn ich zum Besipiel diesen case var an den Beginn stelle haben wir nur Matches für diese Cases und bekommen gleich Compilation Errors, weil die anderen gar nicht mehr drankommen können. Die Reihenfolge ist hier wichtig. Und dementsprechend wenn ich ein Case auf Person mache, FirstName, ohne when, muss ich diesen Case nach dem when implementieren. Wenn ich das ganze vorher machen würde, würde dieser When-Case nicht drankommen und damit haben wir einen Compilation Error. Reihenfolge ist wichtig, dementsprechend kann aber das default an irgendeiner Stelle definiert werden. default:break, das ist sowieso nur der default wenn andere Cases nicht zutreffen. Start. Pattern Matching ist ein ganz mächtiges Feature von C# 7. Wir haben Erweiterungen für das switch-Statement, Erweiterungen für den is-Operator und können bei beiden Const-, Type- und Var-Patterns nutzen. Der Var-Pattern schlägt immer zu, mit diesem Pattern bekomme ich dann den richtigen Typ geliefert. Der Type-Pattern, hiermit können wir auch filtern. Beim switch mit Hilfe von when. Und schließlich der Const-Pattern, den wir auf Konstante vergleichen.

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!