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.

LINQ Grundkurs

Closures

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit Closures können Funktionen auf Werte außerhalb ihres Kontextes zugreifen. Dadurch vereinfacht sich die Schreibweise. Es kann aber auch zu Problemen kommen.
03:29

Transkript

Setzen wir anonyme Methoden ein, dann müssen wir uns noch mit einem anderen Konzept beschäftigen, und zwar den sogenannten "Closures". Das möchte ich an einem einfachen Beispiel zeigen, indem ich eine anonyme Methode angelegt habe. Diese hat einen Eingabeparameter, und zwar "x" "x" ist ein Integer, wie hier vorne steht und dieses "x" wird automatisch an "Console.WriteLine" weitergegeben. Die Methode selbst wird innerhalb einer "while"-Schleife aufgerufen, wobei für das "while" an dieser Stelle "int" auf null gesetzt wird. "while" wird solange durchlaufen, wie "(i < 10" ist und "(i)" wird an dieser Stelle hochgezählt. Das "Console.ReadKey()" sorgt nur dafür, dass wir das Ergebnis in der Konsole auch sehen können, andernfalls würde sich die Konsole einfach schließen. Wir führen das Ganze jetzt einmal aus. Dann sehen wir, dass die Zahlen von 0 bis 9 hochgezählt werden und besonders ist das jetzt eigentlich nicht, denn wir führen ja im Grunde nur eine Methode aus, die sowieso ihren Wert übergeben bekommt, den sie dann anzeigt. Das ist noch keine "Closure" Zur "Closure" wird das Ganze, indem ich jetzt dieses "i" einmal hier vorne hinschreibe, und die Parameterübergabe vollkommen sein lasse. Das heißt, meine "Action" bekommt keinen Wert übergeben, sondern sie schreibt direkt "(i)" An dieser Stelle müssen wir den Parameter dann auch entfernen ansonsten ändern wir nichts. Starten wir jetzt, dann sehen wir, dass sich das Ergebnis eigentlich nicht sonderlich verändert hat. Es wird wieder von 0 bis 9 ausgeschrieben und damit haben wir eine "Closure". Denn wir müssen uns an dieser Stelle nicht darum kümmern, wie "Console.WriteLine" eigentlich zu diesem "(i)" Denn unsere Methode, unsere anonyme Methode, kann auf dieses "i" direkt zugreifen. Das "i" ist dann quasi im selben Kontext, wie die Methode. Es kann aber auch außerhalb dieses Kontext verändert werden und es kann auch innerhalb der Methode verändert werden. Das ist etwas, was man unbedingt beachten sollte, wenn man solche "Closures" nutzt. Dann schreibe ich jetzt dieses "i++" und führe alles noch einmal aus, dann wird meine Methode nicht mehr sooft aufgerufen, da "i"ja jetzt an zwei Stellen hochgezählt wird. Einmal innerhalb der "Action" und einmal innerhalb der "while"-Schleife. Es kann also sein, dass wenn Sie "Closures" beispielsweise nutzen, um Filterkriterien zu übergeben und diese Filterkriterien dann in einer der Methoden geändert wird, in einer der Instanzen dieser Methode geändert wird, dass sie sich auch auf alle anderen auswirken. Das kann sehr interessante Fehler nach sich ziehen in "multithreaded"-Umgebungen. Sie haben also grundsätzlich gesehen, was "Closures" sind und auch wie man sie einsetzt, welche Gefahr besteht, aber eins habe ich außen vorgelassen und ich glaube Sie verzeihen mir das, die mathematischen Hintergründe.

LINQ Grundkurs

Lernen Sie die LINQ-Operationen kennen und erstellen Sie praktische Abfragen direkt in C# und .NET.

2 Std. 10 min (26 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.10.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!