Ieteicams, 2021

Redaktora Izvēle

Atšķirība starp delegātiem un notikumiem C #

abām darbībām ir svarīga loma pasākumos balstītā programmā. Delegāti var atsaukties uz metodi, un tas ir diezgan līdzīgs C ++ funkciju rādītājam. Notikumi paziņo, ka ir veikta kāda darbība. Galvenā atšķirība starp delegātiem un notikumiem ir tā, ka delegātiem ir atsauce uz metodēm un notikums sniedz iespēju piekļūt šai metodei, izmantojot delegātus.

Salīdzinājuma diagramma

Salīdzinājuma pamatsDelegātiNotikumi
PamataDelegātam ir atsauce uz metodi.Pasākums ir pārmērīga abstrakcija, ko sniedz delegātiem.
Sintaksedeleģēt atgriešanās tipa delegāta_nosaukumu (parametrs_list);notikuma notikuma_delegāts notikuma nosaukums;
AtslēgvārdsDelegāts tiek deklarēts, izmantojot atslēgvārdu "delegāts".Pasākums tiek deklarēts, izmantojot atslēgvārdu "notikums".
DeklarācijaDelegāts tiek pasludināts ārpus jebkuras klases.Pasākums tiek pasludināts klasē.
UzsāktLai izmantotu metodi, tas jānodod delegātam.Lai izmantotu metodi, kas tai jāpiešķir pasākumam.
Kovarācija un kontracepcijaTie nodrošina elastību delegātiem.Šādas koncepcijas nav.
Notikumu piekļuves rīksŠādas koncepcijas nav.Pārvalda notikumu apstrādātāju sarakstu.
AtkarībaDelegāti ir neatkarīgi no notikumiem.Notikumu nevar izveidot bez delegātiem.

Delegātu definīcija

C # delegāti tiek izmantoti kā funkciju rādītājs, lai norādītu metodi. Tieši tas ir objekts, kas attiecas uz tai piešķirto metodi. Vienu un to pašu delegātu var izmantot, lai atsauktos uz dažādām metodēm, jo ​​tas spēj uzturēt atsauces uz dažādām metodēm, bet pa vienam. Kura metode tiks izmantota delegāta noteiktajā laikā. Delegāta paziņošanas sintakse ir šāda:

 deleģēt atgriešanās tipa delegāta_nosaukumu (parametrs_list); 

Šeit atgriešanās veids norāda, ka vērtības veids, ko atdod ar metodi, tiek deleģēts un deleģētais vārds ir delegāta vārds. Parametrs_list definē to parametru sarakstu, kurus pieprasa deleģētā izsauktās metodes.

Ir daži svarīgi punkti, kas jāatceras par delegātiem. Tā var izsaukt jebkuru metodi, kas atbilst tās parakstam un atgriešanās veidam. Delegāts var izsaukt gan gadījuma metodi, gan statisku metodi. Ja tā izsauc gadījuma metodi, tai jāizmanto objekta palīdzība, lai izmantotu metodi. Delegāti atbalsta multiraides sūtīšanu, ti, jūs varat paātrināt metodes, kas tiks automātiski izsauktas, kad tiek izmantots delegāts, kas uz tiem atsaucas. Jums vienkārši jāizveido deleģētais objekts un jāpiešķir metodes pēc kārtas ķēdē, izmantojot operatoru „+ =”. Metodi var arī noņemt, izmantojot “- =” operatoru.

Funkcijas, kas deleģētājam piešķir papildu elastību, ir Covariance un Contravariance. Kovarācija un kontracepcija ļauj nosacījumam, ka atgriešanās veids un deleģētajam piešķirtās metodes parakstīšana atšķiras no deleģētā.

  • Kovarsija ļauj jums deleģētājam piešķirt metodi, ja metodes atgriešanas veids ir klase, kas iegūta no klases, kas nosaka delegāta atgriešanās veidu.
  • Contravariance ļauj jums piešķirt metodi delegātam, ja metodes parametru tips ir klases klase, kas norādīta kā delegāta parametrs.

Notikumu definīcija

Notikumi ir veiktie pasākumi, kas maina objekta stāvokli. Notikumi tiek deklarēti, izmantojot delegātus, bez delegātu klātbūtnes, kurus nevarat paziņot par notikumiem. Jūs varat teikt, ka pasākums nodrošina iesaiņošanu delegātiem. Darbojoties ar notikumiem, kas ir notikumu un notikumu apstrādātāji, ir divi svarīgi savienojumi. Ja objekti ir ieinteresēti pasākumā, tad tas reģistrē notikumu apstrādātāju šim konkrētajam notikumam. Un, kad notikumi tiek atlaisti, tiek reģistrēti reģistrētie notikumu apstrādātāji. Notikuma deklarācija ir šāda:

 notikuma notikuma_delegāts notikuma nosaukums; 

Šeit “notikums” ir atslēgvārds, kas parāda notikuma deklarāciju. Tālāk event_delegate parāda tā delegāta vārdu, kas atbalsta notikumu. Tad notikuma nosaukums ir pasākuma nosaukums

Ir daži svarīgi punkti, kas jāatceras, risinot notikumus. Tāpat kā delegāti, notikumi var būt arī multiraidumi, ti, vairāki objekti, kas tiek saslēgti (reģistrēti) notikumu apstrādātājam, reaģē, kad notikums tiek paaugstināts. Notikumu apstrādātājus var pievienot ķēdei, izmantojot operatoru “+ =”, un tos var neizmantot, izmantojot operatoru “- =” Gan statisko, gan gadījumu metodi var izmantot kā notikumu apstrādātāju. Pasākuma piekļuves lietotājs var jums kontrolēt notikumu apstrādātāju saraksta īstenošanu.

Saskarne var saturēt notikumus. Notikumi var būt arī abstrakti, bet piekļuves notikums nevar būt abstrakts. Pasākums var būt virtuāls, un to var atcelt atvasinātā klase.

Galvenās atšķirības starp delegātiem un notikumiem C #

  1. Delegāts ir objekts, ko izmanto kā funkciju rādītāju metodes atsauces glabāšanai. No otras puses, pasākumi nodrošina delegātiem abstrakciju.
  2. Atslēgvārds, kas nepieciešams, lai deklarētu delegātu, ir delegāts, bet atslēgvārds, kas nepieciešams, lai paziņotu par notikumu, ir notikums .
  3. Delegāts tiek pasludināts ārpus klases, bet notikums tiek pasludināts klasē.
  4. Lai izmantotu metodi, izmantojot deleģēto objektu, metode ir jānodod delegāta objektam. No otras puses, lai izmantotu metodi, izmantojot notikuma objektu, metode ir jānorāda uz notikuma objektu.
  5. Covariance un Contravariance nodrošina papildu elastību delegātiem. No otras puses, pasākumam nav šādu jēdzienu.
  6. Notikumu piekļuves rīks apstrādā notikumu apstrādātāju sarakstu, bet delegātam nav šādas koncepcijas.
  7. Delegāti ir neatkarīgi no notikumiem, bet notikumus nevar izveidot bez delegāta.

Secinājums:

Delegāti ir noderīgi, jo tie atbalsta pasākumus, un tie nodrošina iespēju izpildīt metodi runtime. Notikumu piekļuves rīks ļauj mums sinhronizēt notikumu apstrādātājus daudzfunkcionālos lietojumos.

Top