Soovitatav, 2024

Toimetaja Valik

Erinevus delegaatide ja sündmuste vahel C #

mõlemad mängivad tähtsat rolli üritusel põhinevas programmis. Delegatsioonid võivad viidata meetodile ja see on üsna sarnane C ++ funktsiooni pointeriga. Sündmused teatavad, et mõned toimingud on tehtud. Põhiline erinevus delegaatide ja sündmuste vahel on see, et delegaadid hoiavad viiteid meetoditele ja sündmus annab võimaluse kasutada seda meetodit delegaatide abil.

Võrdluskaart

Võrdluse alusDelegatsioonidSündmused
PõhilineDelegatsioonil on meetodi viide.Üritus on delegaatidele pakutav ülekihiline abstraktsioon.
Süntaksidelegeerida tagasipöördumistüübi delegatsiooni_nimi (parameeter_list);sündmuse sündmuse_delegate sündmuse_nimi;
MärksõnaDelegatsioon deklareeritakse kasutades märksõna "delegaat".Sündmus deklareeritakse märksõna "sündmus" abil.
DeklaratsioonDelegaat deklareeritakse väljaspool ühegi klassi.Üritus on klassi sees.
KäivitaMeetodi rakendamiseks tuleb see edastada delegaadile.Meetodi kasutamiseks tuleb see sündmusele määrata.
Covariance ja ContravarianceNad pakuvad delegaatidele paindlikkust.Sellist mõistet pole.
Sündmuse ligipääsSellist mõistet pole.Haldab sündmuste käitlejate loendit.
SõltuvusDelegatsioonid on sündmustest sõltumatud.Üritust ei saa luua ilma delegaatideta.

Delegatsioonide määratlus

C # -is kasutatakse meetodi viitamiseks funktsionaalnäitajana delegaate. See on konkreetselt objekt, mis viitab sellele määratud meetodile. Sama delegaati saab kasutada erinevate meetodite viitamiseks, kuna see on võimeline pidama viiteid erinevatele meetoditele, kuid ükshaaval. Millist meetodit delegatsioon kasutab, määratakse kindlaks käitusajal. Delegatsiooni deklareerimise süntaks on järgmine:

 delegeerida tagasipöördumistüübi delegatsiooni_nimi (parameeter_list); 

Siin deklareerib Return_type meetodi poolt tagastatud väärtuse tüübi, mida nimetab delegaat ja delegaat_nimi on delegaadi nimi. Parameetrite loend määrab parameetrite nimekirja, mida vajavad meetodid, mida delegeerija kutsub.

Delegaatide kohta tuleb meenutada mõningaid olulisi punkte. See võib helistada mistahes meetodile, mis vastab selle allkirjale ja tagastamisviisile. Delegeeritud isik võib helistada nii eksemplari meetodile kui ka staatilisele meetodile. Kui see nõuab näiteks meetodi kasutamist, peab see meetodi rakendamiseks kasutama objekti abi. Delegaadid toetavad multisaatmist, st saate neid meetodeid, mida neile kutsutakse, kasutama automaatselt. Lihtsalt peate looma delegeeritud objekti ja määrama meetodid üksteise järel ahela abil, kasutades operaatorit + +. Samuti saate meetodi eemaldamiseks kasutada “- =” operaatorit.

Funktsioonid, mis annavad delegaadile lisavõimalust, on Covariance ja Contravariance. Covariance ja Contravariance lubavad seisundit, kus tagasisaatmisviis ja allkirjastajale määratud meetodi allkiri on delegaadi omast erinev.

  • Covariance võimaldab määrata delegaadile meetodi, kus meetodi tagastamisliik on klass, mis on tuletatud klassist, mis määrab delegaadi tagastamisviisi.
  • Contravariance võimaldab määrata delegaadile meetodi, kus meetodi parameetri tüüp on selle klassi põhiklass, mis on määratud delegaadi parameetrina.

Sündmuste mõiste

Sündmused on toiming, mis muudab objekti olekut. Üritused deklareeritakse delegaatide kaudu, ilma et saaksid kohalolijaid kohalolekut esitada. Võite öelda, et sündmus annab delegatsioonidele kapseldamise. Sündmuste ja sündmuste käitlejaga seotud sündmuste käsitlemisel on kaks olulist ühendit. Kui objektid on üritusest huvitatud, registreerib see sündmuste käitleja selle konkreetse sündmuse jaoks. Ja kui sündmusi vallandatakse, kutsutakse registreeritud sündmuste käitlejad. Sündmuse deklaratsioon on järgmine:

 sündmuse sündmuse_delegate sündmuse_nimi; 

Siin on „sündmus” märksõna, mis näitab sündmuse deklaratsiooni. Järgmisena näitab event_delegate sündmust toetava delegaadi nime. Seejärel on sündmuse_nimi sündmuse nimi

Sündmuste käsitlemisel tuleb meeles pidada mõningaid olulisi punkte. Sarnaselt delegaatidele võivad sündmused olla ka multicast, st mitu sündmuse käitlejaga aheldatud (registreeritud) objekti reageerivad sündmuse tõstmisel. Sündmuste käitlejaid saab lisada ahelale operaatori „+ =” abil ja neid saab eemaldada operaatori “- =” abil. Nii staatilist kui ka eksemplari meetodit saab kasutada sündmuste käitlejana. Sündmuse ligipääs saab kontrollida sündmuste käitleja nimekirja rakendamist.

Liides võib sisaldada sündmusi. Sündmused võivad olla ka abstraktsed, samas kui juurdepääsupõhine sündmus ei saa olla abstraktne. Üritus võib olla virtuaalne ja tuletatud klassi poolt üle vaadata.

Esindajate ja sündmuste peamised erinevused C #

  1. Delegeeritud on objekt, mida kasutatakse funktsiooni viitena meetodi viite hoidmiseks. Teisalt annavad sündmused delegaatidele abstraktsiooni.
  2. Märksõna, mis on vajalik delegaadi deklareerimiseks, on delegaat, samas kui sündmuse deklareerimiseks vajalik märksõna on sündmus .
  3. Delegatsioon kuulutatakse väljapoole klassi, samas kui sündmus kuulutatakse klassi sees.
  4. Selleks, et kasutada meetodit delegeeritud objekti abil, tuleb meetod delegeeritud objektile suunata. Teisest küljest, juhul, kui kasutate sündmuseobjekti kasutavat meetodit, tuleb meetod suunata sündmuse objektile.
  5. Covariance ja Contravariance annavad delegaatide objektidele täiendavat paindlikkust. Teisest küljest ei ole sündmusel selliseid mõisteid.
  6. Event Accessor haldab sündmuste käitlejate loendit, samas kui delegaadil puudub selline kontseptsioon.
  7. Delegatsioonid on sündmustest sõltumatud, kuid sündmusi ei saa ilma delegatsioonita luua.

Järeldus:

Delegaadid on kasulikud, sest nad toetavad sündmusi, ja nad pakuvad võimalust teostada meetodit käitusajal. Sündmuse ligipääs võimaldab meil sündmuste käitlejaid sünkroonida mitmetähendusega rakendustes.

Top