Odporúčaná, 2024

Redakcia Choice

Rozdiel medzi delegátmi a udalosťami v C #

používanie balíčkov a udalostí zohráva dôležitú úlohu v programe, ktorý je určený pre udalosti. Delegáti sa môžu odvolávať na metódu a podobne ako ukazovateľ funkcie v jazyku C ++. Udalosti upozorňujú, že bola vykonaná nejaká akcia. Základným rozdielom medzi delegátmi a udalosťami je to, že delegáti majú odkaz na metódy a udalosť poskytuje spôsob prístupu k tejto metóde pomocou delegátov.

Porovnávacia tabuľka

Základ pre porovnaniedelegátiDiania
základnéDelegát má odkaz na metódu.Podujatie je nadprirodzená abstrakcia poskytovaná delegátom.
syntaxdelegovať return_type delegate_name (parameter_list);udalosť event_delegate názov_účtu;
kľúčovéDelegát je deklarovaný pomocou kľúčového slova "delegát".Udalosť sa deklaruje pomocou kľúčového slova "udalosť".
vyhlásenieDelegát je vyhlásený mimo ktorejkoľvek triedy.Udalosť je deklarovaná vo vnútri triedy.
VzývaťNa vyvolanie metódy musí byť odovzdaná delegátovi.Na vyvolanie metódy musí byť udalosť pridelená.
Covariance a ContravariancePoskytujú delegátom flexibilitu.Žiadny takýto koncept.
Event AccessorŽiadny takýto koncept.Spravuje zoznam spracovateľov udalostí.
závislosťDelegáti sú nezávislí na udalostiach.Udalosť nemôže byť vytvorená bez delegátov.

Definícia delegátov

V delegátoch C # sa delegátmi používa ako ukazovateľ funkcií metóda. Jedná sa konkrétne o objekt, ktorý odkazuje na metódu, ktorá je pridelená. Ten istý delegát môže byť použitý na odkázanie rôznych metód, pretože je schopný držať odkaz na rôzne metódy, ale jeden po druhom. Ktorá metóda použije delegát je určená v čase behu. Syntax vyhlásenia delegáta je nasledovný:

 delegovať return_type delegate_name (parameter_list); 

Tu return_type deklaruje typ hodnoty vrátenej metódou, ktorá sa nazýva delegátom a delegate_name je meno delegáta. Zoznam parametrov definuje zoznam parametrov požadovaných metódami, ktoré povolí delegát.

Existuje niekoľko dôležitých bodov, ktoré treba pamätať na delegátov. Môže zavolať akúkoľvek metódu, ktorá zodpovedá jej podpisu a typu návratu. Delegát môže volat metódu inštancie alebo statickú metódu. Ak volá metódu inštancie, musí vziať pomoc objektu na vyvolanie metódy. Delegáti podporujú multicasting, tj môžete zavádzať metódy, ktoré sa budú automaticky nazývať, keď sa k nim zavolá delegát, ktorý ich odkazuje. Jednoducho musíte vytvoriť objekt delegáta a priradiť metódy jeden po druhom do reťazca pomocou operátora "+ =". Môžete tiež zrušiť metódu pomocou operátora "- =".

Funkcie, ktoré dodávajú väčšiu flexibilitu delegátovi, sú Covariance a Contravariance. Covariance a Contravariance umožňujú podmienku, v ktorej je typ návratu a podpis metódy pridelenej delegátovi odlišné od spôsobu delegácie.

  • Covariance umožňuje priradiť delegátovi metódu, kde návratový typ metódy je trieda, ktorá je odvodená od triedy, ktorá špecifikuje návratový typ delegáta.
  • Contravariance umožňuje priradiť delegátovi metódu, kde typ parametra metódy je základná trieda triedy, ktorá je zadaná ako parameter delegáta.

Definovanie udalostí

Udalosti sú vykonané akcie, ktoré menia stav objektu. Udalosti sú deklarované pomocou delegátov, bez prítomnosti delegátov, ktoré nemôžete deklarovať udalosti. Môžete povedať, že udalosť poskytuje delegátom zapuzdrenie. Pri riešení udalostí, ktoré sú udalosťou a udalosťou, sú dve dôležité zložky. Ak sa objekty zaujímajú o udalosť, potom zaregistruje obsluhu udalosti pre danú udalosť. A kedykoľvek sú udalosti vypálené, registrované udalosti sa volajú. Vyhlásenie o udalosti je nasledovné:

 udalosť event_delegate názov_účtu; 

Tu je "udalosť" kľúčové slovo, ktoré zobrazuje vyhlásenie udalosti. Ďalej, event_delegate zobrazí meno delegáta, ktorý udalosť podporuje. Event_name je názov udalosti

Pri zaoberaní sa udalosťami je potrebné spomenúť niektoré dôležité body. Podobne ako delegáti môžu byť udalosti aj multicast, tj viaceré objekty, ktoré sú priradené k obsluhe udalosti (registrované), reagujú, keď je udalosť vyvolaná. Manipulátory udalostí môžu byť pridané do reťazca pomocou operátora "+ =" a môžu byť zrušené pomocou operátora "- =" Ako statická a inštančná metóda môže byť použitá ako obsluha udalosti. Prístup k udalosti vám môže poskytnúť kontrolu nad implementáciou zoznamu obslužných programov udalostí.

Rozhranie môže obsahovať udalosti. Udalosti môžu byť tiež abstraktné, zatiaľ čo udalosť na základe prístupu nemôže byť abstraktná. Udalosť môže byť virtuálna a môže byť prekonaná odvodenou triedou.

Kľúčové rozdiely medzi delegátmi a udalosťami v C #

  1. Delegát je objekt, ktorý sa používa ako ukazovateľ funkcie na zadanie odkazu na metódu. Na druhej strane udalosti poskytujú delegátom abstrakciu.
  2. Kľúčové slovo, ktoré sa vyžaduje na vyhlásenie delegáta, je delegát, zatiaľ čo kľúčové slovo, ktoré sa vyžaduje na vyhlásenie udalosti, je udalosť .
  3. Delegát je vyhlásený mimo triedy, zatiaľ čo udalosť je deklarovaná v triede.
  4. Ak chcete vyvolať metódu pomocou objektu delegáta, metóda sa musí odkázať na objekt delegáta. Na druhej strane, aby sa vyvolala metóda pomocou objektu udalosti, metóda sa musí vzťahovať na objekt udalosti.
  5. Covariance a Contravariance poskytujú mimoriadnu flexibilitu objektom delegátov. Na druhej strane udalosť nemá takéto pojmy.
  6. Event Accessor spracováva zoznam spracovateľov udalostí, zatiaľ čo delegát nemá takú koncepciu.
  7. Delegáti sú nezávislí na udalostiach, ale udalosti nemožno vytvoriť bez delegátov.

záver:

Delegáti sú užitoční, pretože podporujú udalosti a poskytujú možnosť vykonať metódu počas behu. Doplnok udalosti nám umožňuje synchronizovať obslužné rúry udalostí v aplikáciách s viacnásobným rozkladom.

Top