Ajánlott, 2024

Szerkesztő Választása

Különbség a küldöttek és a C # események között

mindkét esemény fontos szerepet játszik az eseményvezérelt programban. A küldöttek hivatkozhatnak egy módszerre, és meglehetősen hasonlít a C ++ függvény mutatójához. Az események jelzik, hogy bizonyos műveletek végrehajtásra kerültek. A küldöttek és az események közötti alapvető különbség az, hogy a küldöttek a módszerekre utalnak, és az esemény lehetővé teszi a módszert a küldöttek segítségével.

Összehasonlító táblázat

Az összehasonlítás alapjaA küldöttekEsemények
AlapvetőA küldöttnek megvan a módszere referenciája.A rendezvény túlzott rétegű absztrakció a küldötteknek.
Szintaxisdelegálja vissza_típust delegált_neve (paraméter_lista);esemény esemény_delegate esemény_neve;
KulcsszóA küldöttet egy "delegált személy" kulcsszóval deklarálják.Egy eseményt egy "esemény" kulcsszóval deklarálnak.
NyilatkozatA küldöttek bármely osztályon kívül kerülnek bejelentésre.Egy esemény az osztályon belül van.
IndítsunkEgy módszer használatához a küldöttnek kell továbbítania.Egy módszer meghívásához az eseményhez kell rendelni.
A kovariancia és a kontrasztaritásRugalmasságot biztosítanak a küldötteknek.Nincs ilyen fogalom.
Esemény HozzáférésNincs ilyen fogalom.Kezeli az eseménykezelők listáját.
FüggőségA küldöttek függetlenek az eseményektől.Az esemény nem hozható létre küldöttek nélkül.

A küldöttek meghatározása

A C # küldöttségek funkciómutatóként használják a módszert. Ez kifejezetten olyan objektumra utal, amelyhez hozzá van rendelve. Ugyanez a küldött is használható különböző módszerek hivatkozására, mivel képes különböző módszerek hivatkozására, de egyenként. Melyik módszert fogja használni a küldött a futásidőben. A küldött bejelentésének szintaxisa a következő:

 delegálja vissza_típust delegált_neve (paraméter_lista); 

Itt a return_type deklarálja a módszer által visszaadott érték típusát, amelyet a küldött nevez ki, és a delegált_neve a küldött neve. A paraméterek listája meghatározza azokat a paramétereket, amelyeket a küldött által hívott módszerek követnek.

Néhány fontos pontot kell megjegyezni a küldöttekről. Bármely olyan módszert hívhat, amely megfelel az aláírásának és a visszatérési típusnak. A küldött egy példány módszert vagy egy statikus módszert is hívhat. Ha egy példánymódszert hív meg, akkor az objektum segítségét kell igénybe vennie ahhoz, hogy felhívja a módszert. A küldöttek támogatják a multicasting-t, azaz láncolhatják fel azokat a módszereket, amelyek automatikusan hívásra kerülnek, amikor a rájuk utaló küldöttségre hivatkoznak. Egyszerűen létre kell hoznia egy delegált objektumot, és a „+ =” operátorral egymás után rendelnie kell a módszereket. A „- =” operátorral is eltávolíthat egy módszert.

Azok a funkciók, amelyek extra rugalmasságot biztosítanak a küldött számára, a Covariance és a Contravariance. A kovariancia és a kontrasztaráció lehetővé teszi azt a feltételt, hogy a visszaküldési típus és a küldöttre kijelölt módszer aláírása eltér a küldötttől.

  • A kovariancia lehetővé teszi, hogy hozzárendeljen egy módszert a küldötthez, ahol a módszer visszatérési típusa olyan osztály, amely az osztályból származik, amely meghatározza a küldött visszatérési típusát.
  • A Contravariance lehetővé teszi, hogy hozzárendeljünk egy módszert a küldötthez, ahol a módszer paramétertípusa az osztály azon osztálya, amely a küldött paramétereként van megadva.

Az események meghatározása

Az események azok a műveletek, amelyek megváltoztatják az objektum állapotát. Az eseményeket a küldöttek használatával jelentik be, a küldöttek jelenléte nélkül, akik nem tudnak eseményeket bejelenteni. Azt mondhatod, hogy egy esemény kapszulázást biztosít a küldötteknek. Két fontos vegyület létezik események és eseménykezelő események kezelésében. Ha az objektumok érdeklik az eseményt, akkor egy eseménykezelőt regisztrál az adott eseményre. És amikor az eseményeket lőtték, a regisztrált eseménykezelőket hívják. Az esemény bejelentése a következő:

 esemény esemény_delegate esemény_neve; 

Itt az „esemény” olyan kulcsszó, amely egy esemény bejelentését mutatja. Ezután az event_delegate megjeleníti az eseményt támogató küldött nevét. Ezután az esemény_neve az esemény neve

Van néhány fontos pont, amit az események kezelése során fel kell jegyezni. A küldöttekhez hasonlóan az események multicast is lehetnek, azaz több esemény, amely egy eseménykezelőhöz van láncolva (regisztrálva), akkor válaszol, amikor egy esemény felemelkedik. Az eseménykezelők a „+ =” operátor segítségével hozzáadhatók a lánchoz, és a „- =” operátor segítségével nem választhatók ki. Mind a statikus, mind a példány módszer használható eseménykezelőként. Az eseménykezelő megadhatja az eseménykezelő lista végrehajtásának ellenőrzését.

Az interfész eseményeket tartalmazhat. Az események is absztraktak lehetnek, míg az accessor alapú esemény nem lehet absztrakt. Az esemény virtuális lehet, és a származtatott osztály felülbírálható.

Kulcsfontosságú különbségek a küldöttek és a C # események között

  1. A küldött egy olyan objektum, amelyet funkciómutatóként használnak a módszer referenciájának megtartásához. Másrészt az események absztrakciót biztosítanak a küldötteknek.
  2. A küldött kijelzéséhez szükséges kulcsszó egy küldött, míg egy esemény bejelentéséhez szükséges kulcsszó esemény .
  3. A küldött egy osztályon kívül jelenik meg, míg egy esemény az osztályon belül van.
  4. Ha egy módszert delegált objektummal kíván meghívni, a módszert a küldött objektumra kell utalni. Másrészről egy eseményobjektumot használó módszer meghívására az eljárást az eseményobjektumra kell utalni.
  5. A kovariancia és a Contravariance extra rugalmasságot biztosít a küldött objektumok számára. Másrészt, az eseménynek nincs ilyen fogalma.
  6. Az Event Accessor kezeli az eseménykezelők listáját, míg a küldöttnek nincs ilyen fogalma.
  7. A küldöttek függetlenek az eseményektől, de az események nem hozhatók létre küldött nélkül.

Következtetés:

A küldöttek hasznosak, mivel támogatják az eseményeket, és lehetőséget biztosítanak a módszer futtatására futás közben. Az eseménykezelő lehetővé teszi, hogy szinkronizáljuk az eseménykezelőket a többszálas alkalmazásokban.

Top