Megosztás a következőn keresztül:


Meghatalmazottak (C# programozási útmutató)

A meghatalmazott olyan típus, amely egy adott paraméterlistával és visszatérési típussal rendelkező metódusokra mutató hivatkozásokat jelöl. Amikor példányosít egy meghatalmazottat, annak példányát bármely, kompatibilis aláírással és visszatérési típussal rendelkező metódushoz társíthatja. A metódust meghívhatja (vagy meghívhatja) a delegált példányon keresztül.

A meghatalmazottak metódusokat adnak át argumentumként más metódusoknak. Az eseménykezelők nem más, mint a meghatalmazottakon keresztül meghívott metódusok. Létrehozhat egy egyéni metódust, és egy osztály, például egy Windows-vezérlő meghívhatja a metódust egy bizonyos esemény bekövetkezésekor. Az alábbi példa egy deklarációt mutat be:

public delegate int PerformCalculation(int x, int y);

Bármely, a delegált típusnak megfelelő, akadálymentes osztályból vagy szerkezetből származó metódus hozzárendelhető a delegálthoz. A metódus lehet statikus vagy példánymetódus. Ez a rugalmasság azt jelenti, hogy programozott módon módosíthatja a metódushívásokat, vagy új kódot csatlakoztathat a meglévő osztályokhoz.

Megjegyzés

A metódus túlterhelése esetén a metódus aláírása nem tartalmazza a visszatérési értéket. De a meghatalmazottak kontextusában az aláírás tartalmazza a visszatérési értéket. Más szóval egy metódus visszatérési típusának meg kell egyeznie a delegált típusával.

A metódusok paraméterként való hivatkozásának képessége ideálissá teszi a delegáltakat a visszahívási metódusok meghatározásához. Megírhat egy metódust, amely két objektumot hasonlít össze az alkalmazásban. Ez a metódus használható a delegáltakban a rendezési algoritmusokhoz. Mivel az összehasonlító kód elkülönül a kódtártól, a rendezési módszer általánosabb lehet.

A C# 9-hez hasonló helyzetekben függvénymutatókat adtunk hozzá, ahol nagyobb mértékű vezérlésre van szükség a hívási konvenció felett. A delegálthoz társított kód meghívása egy delegálttípushoz hozzáadott virtuális módszerrel történik. Függvénymutatók használatával különböző konvenciók határozhatók meg.

Meghatalmazottak áttekintése

A meghatalmazottak a következő tulajdonságokkal rendelkeznek:

  • A meghatalmazottak hasonlóak a C++ függvénymutatókhoz, de a meghatalmazottak teljesen objektumorientáltak, és a C++ tagfüggvényekre mutató mutatókkal ellentétben a meghatalmazottak egy objektumpéldányt és egy metódust is beágyaznak.
  • A meghatalmazottak lehetővé teszik a metódusok paraméterként való átadását.
  • A meghatalmazottak visszahívási módszerek meghatározására használhatók.
  • A meghatalmazottak összefűzhetők; Egy eseményen például több metódus is meghívható.
  • A metódusoknak nem kell pontosan megegyeznie a delegált típusával. További információ: Variancia használata a meghatalmazottakban.
  • A Lambda-kifejezések a beágyazott kódblokkok írásának tömörebb módjai. A Lambda-kifejezések (bizonyos kontextusokban) delegált típusokra vannak lefordítva. További információ a lambda kifejezésekről: Lambda-kifejezések.

A szakasz tartalma

C# nyelvspecifikáció

További információ: Meghatalmazottak a C# nyelv specifikációjában. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.

Lásd még