Meghatalmazottak (C# programozási útmutató)
A delegált olyan típus, amely egy adott paraméterlistával és visszatérési típussal rendelkező metódusokra mutató hivatkozásokat jelöl. Amikor egy delegált példányt hoz létre, a delegált példányt bármely olyan metódushoz társíthatja, amely kompatibilis aláírással és visszatérési típussal rendelkezik. A metódust a delegált példányon keresztül hívhatja meg (vagy meghívhatja).
A meghatalmazottak metódusokat adnak át argumentumként más metódusoknak. Az eseménykezelők lényegében a meghatalmazottakon keresztül meghívható metódusok. Egyéni metódus létrehozásakor egy osztály, például a Windows-vezérlő meghívhatja a metódust egy bizonyos esemény bekövetkezésekor.
Az alábbi példa egy meghatalmazotti deklarációt mutat be:
public delegate int PerformCalculation(int x, int y);
Bármely olyan metódust hozzárendelhet bármely akadálymentes osztályból vagy szerkezetből, amely megfelel a meghatalmazott típusának a meghatalmazotthoz. A metódus lehet statikus vagy példánymetódus. A rugalmasság lehetővé teszi, hogy programozott módon módosítsa a metódushívásokat, vagy új kódot csatlakoztassa a meglévő osztályokhoz.
Jegyzet
A metódus túlterhelésének kontextusában a metódus aláírása nem tartalmazza a visszatérési értéket. A meghatalmazottak kontextusában azonban az aláírás tartalmazza a visszatérési értéket. Más szóval egy metódusnak kompatibilis visszatérési típussal kell rendelkeznie a meghatalmazott által deklarált visszatérési típusként.
A metódusok paraméterként való hivatkozásának képessége ideálissá teszi a meghatalmazottakat a visszahívási módszerek meghatározásához. Olyan metódust írhat, amely két objektumot hasonlít össze az alkalmazásban. A metódus ezután egy delegátban is használható egy rendezési algoritmushoz. Mivel az összehasonlító kód eltér a kódtártól, a rendezési módszer általánosabb lehet.
függvénymutatók hasonló forgatókönyveket támogatnak, ahol nagyobb mértékben kell szabályoznia a hívási konvenciót. A meghatalmazotthoz társított kód meghívása egy delegálttípushoz hozzáadott virtuális módszerrel történik. Ha függvénymutatókkal dolgozik, különböző konvenciókat adhat meg.
A delegált jellemzőinek megismerása
A meghatalmazottak a következő jellemzőkkel rendelkeznek:
- A meghatalmazottak lehetővé teszik a metódusok paraméterként való átadását.
- A meghatalmazottak visszahívási módszerek definiálására használhatók.
- A delegáltak összefűzhetők, például több metódus hívható meg egyetlen eseményhez kapcsolódóan.
- A metódusoknak nem kell pontosan egyezniük a delegált típusával. További információ: A variancia alkalmazása a delegáltakban.
- A Lambda-kifejezések a beágyazott kódblokkok írásának tömörebb módjai. A Lambda-kifejezések (bizonyos kontextusokban) delegálási típusokra vannak lefordítva. További információ a lambdakifejezésekről: Lambda-kifejezések.
Kapcsolódó cikkek áttekintése
A meghatalmazottakról az alábbi cikkekben talál további információt:
- Delegáltak használata
- elnevezett és névtelen metódusokkal rendelkező meghatalmazottak
- Delegáltak varianciájának használata
- Meghatalmazottak (csoportos küldésű meghatalmazottak) egyesítése
- Meghatalmazotti deklarálása, példányosítása és használata
A C# nyelvi specifikációjának elérése
A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása. További információkért lásd a delegátok a C# nyelv specifikációja-ban.