Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Hernyák Zoltán Programozási Nyelvek II.
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 - = += -el lehet feliratkozni az visszahívási listára -= -el lehet leiratkozni 10
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.