Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 Ön által ezekhez az algoritmusokhoz írt C#-kód típusbiztos. A fordító biztosítja, hogy a típusok egyezzenek az argumentumok és a visszatérési típusok között.
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 többkasztos delegáltak olyan delegáltak, amelyek több metódushívást is láncolnak. 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 felismerte, hogy az eseményminta egy olyan specifikus minta, amelyben a delegáltak 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.
Az összes munkának az eredménye a delegáltak és eseménytámogatás lett C# és .NET környezetben.
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
delegatekulcsszó és a létrehozott kód. - Az osztály funkciói
System.Delegateés azok használata. - Típusbiztos delegátumok létrehozása.
- A meghatalmazottakon keresztül meghívható metódusok létrehozása.
- Delegáltak és események kezelése lambda-kifejezésekkel.
- Hogyan válnak a meghatalmazottak a LINQ egyik építőelemévé.
- Hogyan képezik a delegáltak a .NET eseményminta alapját, és miben különböznek.
Lássunk hozzá.