Delegálás (programozás)

A  delegált egy olyan osztály, amely lehetővé teszi egy metódusra való hivatkozás tárolását egy tetszőleges osztály meghatározott aláírásával (az elfogadott és visszatérési értékek sorrendje és típusai). [1] [2] [3] [4] . A delegált példányok hivatkozásokat tartalmaznak adott osztályok meghatározott metódusaira.

A küldöttek különösen a visszahívási függvény prototípusának meghatározására szolgálnak , például a .NET-keretrendszer eseménymodelljében .

A C# küldöttei

Leírás

A delegált típus deklarációjából a fordító létrehoz egy osztályt , amely a -ból származikSystem.MulticastDelegate . Tehát egy olyan függvény aláírása, amely egy delegáltot vesz argumentumként, így nézhet ki:

public MyFunction ( másik funkció delegálása ) ;

A küldöttek további jellemzője, hogy aszinkron módon hívhatók a BeginInvoke(). Ebben az esetben egy szabad szálkészlet kerül kiválasztásra, és a megadott függvény párhuzamosan végrehajtásra kerül a környezetében. Érdemes azonban megjegyezni, hogy a készletben a szálak száma korlátozott (a jelenlegi .NET megvalósításban 25 van), és a többi hívás kivárja a sorát.

Példa a delegált deklarálására és használatára

a rendszer használatával ; // Delegált nyilatkozat delegate void MyDelegate ( karakterlánc a ); class DelegateExample { static void Func ( string param ) { Console . WriteLine ( "A(z) {0} paraméterrel meghívott függvény." , param ); } public static void Main () { // Példányosítása MyDelegate delegate f = new MyDelegate ( Func ); // Az f függvény hívása ( "hello" ); } }

A példa kiírja a konzolra az "Egy függvény meghívása a hello paraméterrel" sort.

Jegyzetek

  1. " Delegates (Útmutató a C# programozáshoz) archiválva : 2011. szeptember 6., a Wayback Machine " oldal az MSDN könyvtárban
  2. " Delegate - class archiválva : 2011. szeptember 6. a Wayback Machine " oldalon az MSDN könyvtárban
  3. " MulticastDelegate - osztály archiválva 2011. december 24-én a Wayback Machine -nél " oldal az MSDN könyvtárban
  4. Küldöttek és események Archiválva : 2011. augusztus 17. a Wayback Machine -nél // Alexey Dubovtsev, RSDN Magazine #4-2004, 2005.03.26.