A meghatalmazottak és események bemutatása a C-ben#
A meghatalmazottak késői kötési mechanizmust biztosítanak a .NET-ben. A késői kötés azt jelenti, hogy létrehoz egy algoritmust, amelyben a hívó is biztosít legalább egy metódust, amely implementálja az algoritmus egy részét.
Fontolja meg például a csillaglista rendezését egy csillagászati alkalmazásban. Dönthet úgy, hogy ezeket a csillagokat a földtől való távolságuk, a csillag nagysága vagy az észlelt fényerejük alapján rendezi.
Ezekben az esetekben a Sort() metódus lényegében ugyanazt teszi: a lista elemeit valamilyen összehasonlítás alapján rendezi. A két csillagot összehasonlító kód minden rendezési sorrendben eltérő.
Ezeket a megoldásokat már fél évszázada használják a szoftverekben. A C# nyelvdelegálási koncepció első osztályú nyelvi támogatást és típusbiztonságot biztosít a koncepció körül.
Ahogy a sorozat későbbi részében látni fogja, az ilyen algoritmusokhoz írt C#-kód biztonságos típus. A fordító biztosítja, hogy a típusok egyezzenek az argumentumok és a visszatérési típusok között.
A 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. Függvénymutatók használatával különböző konvenciók határozhatók meg.
Nyelvi tervezési célok meghatalmazottak számára
A nyelvtervezők számos célt soroltak fel a funkcióhoz, amelyek végül meghatalmazottakká váltak.
A csapat olyan közös nyelvi szerkezetet akart, amely bármilyen késői kötési algoritmushoz használható. A meghatalmazottak lehetővé teszik a fejlesztők számára, hogy megtanuljanak egy koncepciót, és ugyanazt a koncepciót használják számos különböző szoftverproblémában.
Másodszor, a csapat támogatni akarta az egy- és csoportos küldésű metódushívásokat is. (A csoportos küldésű meghatalmazottak olyan meghatalmazottak, amelyek több metódushívást is összefűznek. A sorozat későbbi részében láthat példákat.)
A csapat azt akarta, hogy a meghatalmazottak ugyanolyan típusú biztonságot támogassanak, mint amit a fejlesztők elvárnak az összes C#-szerkezettől.
Végül a csapat felismert egy eseménymintát, amely egy adott minta, amelyben a meghatalmazottak vagy bármely késői kötési algoritmus hasznos lehet. A csapat biztosítani akarta, hogy a meghatalmazottak kódja adja meg a .NET-eseményminta alapját.
A munka eredménye a C# és a .NET delegált és eseménytámogatása volt.
A sorozat további cikkei a nyelvi funkciókat, a könyvtártámogatást és a meghatalmazottak és események használatakor használt gyakori kifejezéseket ismertetik. A következő tudnivalókat fogja elsajátítani:
- A
delegate
kulcsszó és a létrehozott kód. - Az osztály funkciói
System.Delegate
és azok használata. - Típusbiztos meghatalmazottak létrehozása.
- A meghatalmazottakon keresztül meghívható metódusok létrehozása.
- Delegáltak és események használata lambda-kifejezések használatával.
- Hogyan válnak a meghatalmazottak a LINQ egyik építőelemévé.
- Hogyan alapulnak a meghatalmazottak a .NET-eseménymintához, és hogy miben különböznek.
Lássunk neki!