Entwickler-Ecke

Basistechnologien - Verständnisfrage zu Delegates


lapadula - Do 29.09.16 20:33
Titel: Verständnisfrage zu Delegates
Hallo, kann mir jemand simple erklären was delegates genau tun?
Soviel ich weiß ist das nur eine Referenz auf eine oder mehrere Methoden. Oder liege ich falsch?

Wie ist man vor Erfindung der delegates vorgegangen, also welches Problem lösen delegates?


Palladin007 - Do 29.09.16 21:02

Delegaten sind Typen, Referenz-Typen.
Sie beschreiben die vollständige Signatur einer Methode
Damit kannst Du dann eine Methode als variable speichern, Parameter übergeben, etc.
Du arbeitest dann mit der Referenz zu einer Methode.

Bei Java gibts dafür meines Wissens nach nur Interfaces mit sowas wie einer Run-Methode.
Da man in Java ein Interface aber auch inline implementieren und davon direkt eine Instanz erzeugen kann, funktioniert das als Ersatz für Delegaten.

Unter C++ kannst Du dir für eine Methode den Pointer geben lassen und den dann als Variable umher reichen.

Das machen Delegates einfacher. Du kannst sehr einfach eine feste Definition für eine Methode fest legen, ihr einen Namen verwenden und so definieren, was für eine Methode als Parameter erwartet wird.


Th69 - Fr 30.09.16 08:59

Hallo,

du kannst dir auch mal den Wiki-Artikel Rückruffunktion [https://de.wikipedia.org/wiki/R%C3%BCckruffunktion] (engl. "callback function") durchlesen, welcher die Grundlage für die Delegates bildet. Die .NET Delegates (erzeugt durch das Schlüsselwort delegate) basieren intern sogar auf der Klasse MulticastDelegate [https://msdn.microsoft.com/de-de/library/system.multicastdelegate%28v=vs.110%29.aspx], d.h. man kann sogar mehrere Methoden daran binden (u.a. Grundlage für die Ereignisse).


lapadula - Do 13.10.16 08:35

Okay, sind also wie die Interfaces eine Art Schablone, so verstehe ich das jetzt.