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!

Következő