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.

Visual C# 2011 Grundkurs

Vordefinierte Delegates

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Meist braucht man gar keine eigenen Delegates definieren, sondern kann auf im Framework vordefinierte zurückgreifen.
07:50

Transkript

Wenn man Delegaten innerhalb von seinem Programm definiert, ist es natürlich eine gute Sache. Auf der anderen Seite ist jeder Delegat ein zusätzlicher Typ, der in meiner Projektmappe liegt, der verändert und verwaltet werden muss. Deswegen bietet .NET bereits einige vordefinierte Delegaten, und die schauen wir uns in dieser Demo einmal an. Zunächst haben wir oft Methoden, die keinen Rückgabetyp haben, nur eine größere Anzahl von Parametern oder halt keine. Im .NET- Framework gibt es dafür den vorgegebenen "Action-Delegat". Eine Methode z.B. ohne Rückgabetyp und mit gar keinem Parameter kann man mit einem normalen "Action del" benutzen, dann gebe ich "MyClickMethod" an, und hier könnte ich dann den Delegaten einfach ausführen. Jetzt hat man aber manchmal auch eine Methode, ich kopiere das einfach mal mit Strg+C, Strg+V, die einen Parameter haben. Auch dazu kann man den Action-Delegaten benutzen. Der Action-Delegat ist ein generischer Delegat, d.h. ich kann hier in spitzen Klammern angeben, welchen Typ dieser erste Parameter hat. Diesen Delegaten kann ich auch verwenden, wenn ich eine längere Parameterliste habe. Hier sieht man das. Hier kann ich dann mit einem Komma den 2. Typen angeben, den 3. und den 4. Da gibt es insgesamt, wie man hier sieht, 16 Überladungen für. Also geben wir hier den Typ unseres Parameters in diesen spitzen Klammern an. Das ist "int", nennen wir ihn "Delegat2", sagen "new Action" und geben den Namen von "MyClickMethod" an. Dann kann ich hier unten diesen Delegaten aufrufen mit dem entsprechenden Parameter. Das ist für Methoden, die keinen oder mehrere Parameter haben. Mit dem Action-Delegat kann ich nur auf Methoden zeigen, die keinen Rückgabetyp haben. Für Methoden, die einen Rückgabetyp haben, welcher Art auch immer es da gibt, gibt es den "Func-Delegaten " - "Func" steht für "Function". Dort gebe ich zunächst an, welchen Rückgabetyp ich habe. Wir gehen jetzt mal davon aus, ich hätte eine Methode mit einem Integer-Rückgabewert und 2 String-Parametern. Würde ich zunächst die passende Überladung raussuchen. Das würde ungefähr so ausgehen. Dort kann ich 2 Parameter angeben und den Result-Wert - wir hatten gesagt: "int" - Rückgabe, 2 String-Parameter. Also würde ich zweimal String schreiben und als Rückgabeparameter ein "int". Der hieße dann "del3". Dem würde ich ein Objekt zuweisen von eben demselben Delegaten, und hier einen Methodennamen angeben. Aber wir haben jetzt gerade keine Methode da, es geht einfach nur ums Prinzip. Ein weiterer, sehr wichtiger Delegat im .NET-Framework ist der EventHandler. Der EventHandler wird sehr massiv in Oberflächen z.B. eingesetzt. Beim EventHandler geht es darum, dass ich in der Parameterliste des Delegaten zum einen das sendende Objekt mitgebe und ein Parameter-Objekt. Das schauen wir uns jetzt mal genauer an am Beispiel der Klasse "Button". In dieser Klasse "Button" gibt es ein definiertes Event mit einem selbstdefinierten Delegaten - der ist hier unten definiert - und eben das ClickEvent. In der Klasse "Button" haben wir hier ein Event. Dieses Event hat einen Delegaten vom Typ "ClickHandler", und den möchten wir jetzt einmal ersetzen. Wir nutzen hier den vordefinierten Delegaten "EventHandler". Dieser EventHandler ist ein sehr weit verbreiteter und genutzter Delegat im .NET Framework. Der hat die Besonderheit, dass er auf eine Methode zeigt, die zum einen einen Sender erwartet - ein Sender ist immer "this", also die aktuelle Klasse - und zum anderen "EventArgs". Es werden hier keine Parameter direkt übergeben, sondern ein "Event Argument Object", d.h., ich kann dort in dieser EventArguments-Klasse mehrere Parameter definieren. Wenn ich dort einen Parameter hinzufüge, muss ich die ganzen Methoden, die außerhalb liegen, nicht erst anfassen, was ich z.B. hätte tun müssen, wenn ich separate Parameter in meinem Delegaten definiert hätte. Wenn ich keine EventArgs benötige, kann ich hier "EventArgs.Empty" auswählen - das ist quasi ein Wert für ein leeres EventArgs-Object. Zurück in unserer Programmklasse müssen wir jetzt hier noch 2 Anpassungen vornehmen. Zum einen müssen wir oben einen Typ "EventHandler" dranhängen, und unten müssen wir diese ClickMethod ein wenig anpassen. Wir müssen sagen, zunächst haben wir einen "object sender", und dann haben wir die "EventArgs args". Dieser Action-Delegat hier oben funktioniert natürlich nicht mehr, eben aus dem Grund, weil die Signatur dieser Methode sich geändert hat. Den kommentiere ich einfach einmal aus, dann stört er uns nicht weiter. Wenn ich hier oben das ClickedEvent angucke - ich habe jetzt den Delegaten ausgetauscht gegen den Framework-Delegaten "EventHandler", der übergibt hier unten bei dieser Methode, wenn sie aufgerufen wird, zum einen den Sender und dann die "EventArgs". Der Sender ist durchaus nützlich, weil wenn man nachher mehrere von diesen Buttons hat, die alle eine Methode abonniert haben, kann ich in der Methode unterscheiden, welcher Button denn jetzt die Methode ausgelöst hat. Diesen EventHandler sollten Sie immer benutzen, egal, was für Events Sie machen, weil man immer mal wieder in die Situation kommt, dass man bestehende Delegaten ändern muss. Wenn man den EventHandler benutzt, ist man da eigentlich relativ flexibel, eben durch dieses Parameter-Objekt. Und man hat immer gleichzeitig noch den Komfort, dass das sendende Objekt sich selber mit übergibt. Diesen Delegaten werden Sie später auch bei Windows-Forms-Programmierungen z.B. mehr als durchgehend finden. Da wird dieser fast nur eingesetzt. Wir haben uns in diesem Video mal angeschaut, welche verschiedene Arten von Delegaten es bereits im .NET Framework gibt, die wir benutzen können. Wir haben gesehen, mit dem Action-Delegaten können wir auf eine Methode zeigen, die keinen Rückgabewert hat - die mit "void" definiert ist. Ich kann zusätzlich in den spitzen Klammern angeben, wenn ich eine Parameterliste habe - dort gibt es bis zu 16 Überladungen. Ich kann also eine ganze Liste an Parametern in einer Methode unterstützen. Wenn ich eine Methode mit Rückgabewert habe, nehme ich den Func-Delegaten. Mit dem Func-Delegaten kann ich zunächst einmal einen Rückgabewert definieren, auch wieder in diesen dreieckigen Klammern, und zusätzlich kann ich noch den Typen einer Parameterliste innerhalb dieser Methode, auf die später gezeigt wird, definieren. Als letztes haben wir uns den EventHandler angeguckt. Beim EventHandler haben wir den großen Vorteil, dass es zunächst ein Delegat ist, der weit verbreitet ist im .NET Framework. Als Zweites haben wir immer die Möglichkeit, das aktuell auslösende Objekt mitzugeben - in dem "object sender", und der zweite Parameter ist ein Parameter-Objekt. In diesem Parameter-Objekt kann ich ohne Weiteres neue Parameter hinzufügen, ohne dass ich die Methoden, die diese Events von außen abonniert haben, in irgendeiner Weise ändern müssen.

Visual C# 2011 Grundkurs

Steigen Sie in die C#-Programmierung ein und lernen Sie sowohl die Grundlagen der Sprache C# als auch die Entwicklungsumgebung Visual Studio 2010 und .NET-Framework kennen.

7 Std. 28 min (81 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Visual Studio Visual Studio 2010
Exklusiv für Abo-Kunden
Erscheinungsdatum:27.06.2011

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!