Diskuze: Delegati a udalosti

C# .NET .NET (C# a Visual Basic) Delegati a udalosti American English version English version

Aktivity (1)
Avatar
Tayson
Člen
Avatar
Tayson:26.9.2016 21:06

Ahojte. Chcem sa opytat ohladom delegatov a udalosti. Viete mi blizsie povedat konkretnejsi rozdiel ? Pretoze naco by som robil udalost ked si mozem spravit delegata a jednoducho si metodu z druhej class zavolat po kliku napriklad bez toho aby som robil udalost a to mozem spojit metod kolko chcem.

 
Odpovědět 26.9.2016 21:06
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:26.9.2016 21:16

Rozdíl je poměrně jednoduchý, ale o to důležitější.

Delegáta můžeš velmi jednoduše přepsat a tím mimo samotného přepsání i odstraníš všechny ostatní "subscriby".

animal.Do += () => Foo();
animal.Do += () => Bla();

animal.Do = () => XYZ(); //prepsani delegata, Foo a Bla jsou hooknute na delegata, ktery uz neexistuje
Nahoru Odpovědět  +2 26.9.2016 21:16
"C# 3.0 (2007) volal Java 8 (2014), že chce svoje featury zpět"
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na Tayson
Lukas C#:26.9.2016 21:27

A ještě event je možné vyvolat pouze uvnitř dané třídy, kdežto delegát kdekoliv na instanci třídy s delegátem pomocí metody Invoke():

instance.PublicDelegate.Invoke(parametry...);
Editováno 26.9.2016 21:28
 
Nahoru Odpovědět  +1 26.9.2016 21:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.