Delegate
-
Hi,
kann mir einer mal bitte leicht verständlich Delegate erklähren,
verstehe Sinn und Nutzung nicht so richtig.Vielleicht hat auch jemand ein selbsterklärendes Beispiel.
Ihr erklärt das meist besser als irgendein Buch, danke.
-
Schau hier: http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_05_001.htm#Xxxobkap05001040017d61f016186
Verständlich erklärt finde ich ...
-
Ok, also ich kann dem Werte übergeben und anschließend zeig
ich auf die Methode die ich nutze möchte. Geht der auch beim überladen?also dann:
public delegate double ProcessOperation(double dblVar1, double dblVar2);
public delegate double ProcessOperation(double dblVar1, double dblVar2, double dblVar3);
-
Jup. Und die nächste Frage beantworte ich auch gleich: Geht auch mit virtuellen Methoden.
-
-
In Java gibts nichts vergleichbares, oder?
-
Nein, dort ist der übliche Weg, ein Interface zu definieren und anstelle eines Delegate-Objekts eine Instanz des Interfaces weiterzureichen (z.B. für Event-Listener). Wenn man diese Instanz des Interface mit einer Delegate-Instanz vergleicht, hat man dadurch mehr oder weniger das selbe erreicht.
Delegates sind aber ein schöneres Konstrukt IMHO, weil weniger Schreibarbeit erforderlich ist (anonyme Methoden vs. anonyme Klassen) und sie auch nette Sachen wie Futures gleich mitbringen. Man kann ein Delegate asynchron aufrufen und kriegt ein Handle zurück mit dem man irgendwann viel später sich das Ergebnis holen kann.