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


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 Ö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 delegate kulcsszó é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á.

Következő