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# 6: Neue Funktionen

Vereinfachte Tests auf null

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
C#-Code ist in der Regel gepflastert mit Tests, ob ein Objekt null ist. Mit Hilfe des Null-Propagation-Operators können diese Tests mit Hilfe eines einzigen Fragezeichens formuliert werden. Damit ist die wesentliche Logik des Codes besser lesbar.

Transkript

Im folgenden Abschmitt möchte ich Ihnen etwas zeigen, was sich Null Conditionals oder Null Propagation nennt. Dafür schreiben wir hier eine Methode assert und übergeben ihr einen string Parameter. (Tastatur tippen) Und in dieser Methode möchte ich von system.diagnostics die Klasse debug nehmen, und mit dem debug.assert eine bestimmte Behauptung aufstellen, auf die wir dann testen können. Die Behauptung wäre jetzt zum Beispiel, dass ich sage der substring von so einem string, wenn der mit null beginnt und die Länge hat von dem string, dann entspricht es dem gleichen wie dem string selber. Also ich bekomme hier einen string rein, nehme mir von dem string einen substring, der beginnt beim Index null und hat die Länge der Länge des strings und meine Behauptung ist, dass das Gleiche ist wie der string selbst. Diese Behauptung wollen wir testen, ich muss die Methode natürlich statisch machen, damit die hier in der statischen main Methode sichtbar ist und jetzt übergebe ich hier einen string "Hallo" und dann starten wir die Ganze Sache und siehe da, alles ist wunderbar. (Tastatur tippen) Aber was passiert, wenn ich hier eine Null übergebe? Dann kriegen wir an der Stelle eine Null Pointer Exception, weil ja value null ist und den substring von null, den kann ich eben schlecht bilden. Ich starte das und bekomme auch genau diese exception. So und an der Stelle wollen wir mit der Null Propagation einhaken. Ich mache jetzt hier nach dem value ein Fragezeichen und lasse ansonsten den gesamten Ausdruck gleich wie er ist. Wenn ich das Programm jetzt starte, dann läuft das ohne irgendeine Assertion durch. Was ist jetzt hier passiert? Was bedeutet dieses Fragezeichen? Dieses Fragezeichen heißt, wenn der Wert links vom Fragezeichen null ist, dann soll an dieser Stelle null zurückgegeben werden. Und wenn der Wert ungleich null ist, dann soll alles was rechts davon steht evaluiert werden. Also ist value ungleich null, dann gib zurück value gleich substring und so weiter, ist value gleich null, dann gib null zurück. Wenn wir jetzt hier null übergeben, dann ist der value ja null, dann wird dieser ganze Ausdruck auch null und dadurch entspricht es ja wieder dem gleichen, was wir übergeben haben, nämlich null, und deswegen ist dieses assertion auch wieder true. Das Ganze kann man sogar noch ein bisschen weiter treiben. Ich kopiere mal die Methode hier, nenne sie assert2 und sage ok. Also die Länge von diesem substring, die sollte ja eigentlich auch dann der Länge von unserem übergebenen value entsprechen. Aber natürlich gilt hier ja auch wieder, wenn jetzt statt dem value eine Null daherkommt, dann werden wir an der Stelle eine exception haben und wenn ich jetzt aber auch hier diesen Null Propagation Parameter verwende, dann würde das ja bedeuten, wenn value null ist, dann ist ja der ganze Ausdruck hier null, und auch dieser Ausdruck hier null, wegen des Fragezeichenoperators. Das wollen wir mal sehen, ob das auch wirklich so ist. Ich habe also die beiden asserts hier und starte die Sache nochmal und siehe da, unser Test geht in Ordnung. Jetzt ist natürlich die Frage, was ist denn das value ? Punkt length überhaupt? Die Vermutung liegt ja nahe, dass es dabei um einen Nullable Type handelt und das können wir relativ schnell verifizieren, indem man einfach das hier kopiert, und hier einfügt und das Schöne an diesem var in C# ist, dass wenn ich mit der Maus da drüber fahre, dass mir der Compiler oder, besser gesagt, das Visual Studio, dann verrät von welchem Typ es ist. Und es ist ein System Nullable, wobei "T" int ist, also ein System Nullable of Int.

C# 6: Neue Funktionen

Sehen Sie, dass mit den Neuerungen in der bewährten Programmiersprache vor allem die bessere Lesbarkeit des Codes im Mittelpunkt steht.

40 min (11 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:10.08.2016

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!