Event vs. Multicast-Delegate



  • Hallo und guten Abend,

    ich habe eine kurze, aber wie ich denke, recht interessante Frage!
    Sie lässt sich eigentlich schon vom Titel dieses Themas ableiten.

    Was ist der Unterschied zwischen einem Multicast-Delegate und einem Event?

    Mir stellt sich die Frage, da beide nichts anderes sind als Container für Delegates (sprich Funktionszeiger). Bei beiden ist es so, dass sie bei der Ausführung der Reihe nach die Methoden ihrer Zeiger abklappern!
    Also...bin gespannt auf die Antworten :-)!

    Grüße





  • tnevE schrieb:

    Mir stellt sich die Frage, da beide nichts anderes sind als Container für Delegates (sprich Funktionszeiger). Bei beiden ist es so, dass sie bei der Ausführung der Reihe nach die Methoden ihrer Zeiger abklappern!

    Und das ist genau richtig. Events erlauben es Dir allerdings, die `add`- und `remove`-Methoden neuzudefinieren, sowie den internen Speicher auszutauschen.

    In VB und C++/CLI kann man sogar die `raise`-Methode überschreiben.

    Events sind quasi fest in einen Typen eingeschraubte Delegates.



  • Events kann man auch nicht von aussen "überschreiben" (d.h. man kann zwar += und -= machen, aber nicht =), und auch nicht von aussen aufrufen. Der generierte IL Code ist AFAIK allerdings ähnlich bzw. sogar gleich wie bei einem "public delegate" Member (vorausgesetzt natürlich man überschreibt die add/remove/raise Methoden nicht).


Anmelden zum Antworten