1 / 10

Microsoft.NET környezet

Microsoft.NET környezet. Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz. 1. Delegate - Callback fv-ek készítése. Callback fv: egy megadott típusú (szignatúrájú fv)-t mint paramétert adunk át. Ezen fv vissza lehet hívni.

Download Presentation

Microsoft.NET környezet

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Microsoft.NET környezet Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz 1

  2. Delegate - Callback fv-ek készítése Callback fv: egy megadott típusú (szignatúrájú fv)-t mint paramétert adunk át. Ezen fv vissza lehet hívni. A fv szignatúrát rögzíteni kell, mint típust: delegate void PercentCallback( int ); Kulcsszó Visszatérési típus A típus neve A fv paraméterezése 2

  3. Delegate - Callback fv-ek készítése delegate void PercentCallback( int ); class ZIP_Osztaly { public static void Becsom(string inpFile, PercentCallBack fv) { … file megnyitasa … int szazalek_kesz = 0; while (!nincs_file_vege()) { … egy szakasz becsomagolasa … szazalek_kesz ++; fv( szazalek_kesz ); } … file lezárása … } 3

  4. Delegate - Callback fv-ek készítése delegate void PercentCallback( int ); Megfelel a ‘PercentCallBack’ szignatúrájának class sajatOsztaly { public static void Kiir(int szazalek) { Console.WriteLine(‘#’); } } Becsom(”C:/proba.txt”, new PercentCallBack( sajatOsztaly.Kiir )); Átadjuk neki a PercentCallBack szignatúrának megfelelő fv-t. Ezt a fv-t fogja becsomagolás közben visszahívni… 4

  5. Delegate - Callback fv-ek készítése delegate void PercentCallback( int ); Megfelel a ‘PercentCallBack’ szignatúrájának, de példányszintű! class sajatOsztaly { public void Kiir(int szazalek) { Console.WriteLine(‘#’); } } sajatOsztaly s = new sajatOsztaly(); Becsom(”C:/proba.txt”, new PercentCallBack( s.Kiir )); Átadjuk neki a PercentCallBack szignatúrának megfelelő fv-t. Ezt a fv-t fogja becsomagolás közben visszahívni… 5

  6. Delegate - Callback fv-ek készítése Callback fv típusú mező… delegate void PercentCallback( int ); class ZIP_Osztaly { public static PercentCallback callBackFV = null; public static void Becsom(string inpFile) { … file megnyitasa … int szazalek_kesz = 0; while (!nincs_file_vege()) { … egy szakasz becsomagolasa … szazalek_kesz ++; if (callBackFV != null) callBackFV( szazalek_kesz ); } … file lezárása … } 6

  7. Delegate - Callback fv-ek készítése Nem egy, de több visszahívandó fv kezelése… public static ArrayList callBackFV_List = new ArrayList(); public static void Becsom(string inpFile) { … foreach( PercentCallback fv in callBackFV_LIST) fv( szazalek_kesz ); } ZIP_Osztaly.callBackFV_List.Add( new PercentCallBack( sajatOsztaly.Kiir ) ); Becsom(”C:/proba.txt”); Nem garantált, hogy az ArrayList-be csak ilyen fv-ek kerülnek bele!!! 7

  8. Delegate - Callback fv-ek készítése Típushelyesség kikényszerítése…. private static ArrayList callBackFV_List = new ArrayList(); public static void AddFv( PercentCallBack fv ) { callBackFV_List.Add( fv ); } public static void RemoveFv( PercentCallBack fv ) { callBackFV_List.Remove( fv ); } ZIP_Osztaly.AddFv( new PercentCallBack( sajatOsztaly.Kiir ) ); Becsom(”C:/proba.txt”); ZIP_Osztaly.RemoveFv( new PercentCallBack( sajatOsztaly.Kiir ) ); 8

  9. Delegate - Callback fv-ek készítése delegate void PercentCallback( int ); • public static event PercentCallback callBackFV_LIST; • public static void Becsom(string inpFile) • { • … • if (callBackFV_LIST != null) • callBackFV_LIST( szazalek_kesz ); • } Az ‘event’ szóval deklaráljuk, hogy a callBackFV_LIST egyszerre több fv-t is képes tárolni. Ezen fv-ek mindegyikét a fenti egyszerű szintaxissal meg tudjuk hívni. 9

  10. Delegate - Callback fv-ek készítése ZIP_Osztaly.callBackFV_List + = new PercentCallBack( sajatOsztaly.Kiir ) ); Becsom(”C:/proba.txt”); ZIP_Osztaly.callBackFV_List - = new PercentCallBack( sajatOsztaly.Kiir ) ); += -el lehet feliratkozni az visszahívási listára -= -el lehet leiratkozni 10

More Related