Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Hernyák Zoltán Programozási Nyelvek II.

Hasonló előadás


Az előadások a következő témára: "Hernyák Zoltán Programozási Nyelvek II."— Előadás másolata:

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


Letölteni ppt "Hernyák Zoltán Programozási Nyelvek II."

Hasonló előadás


Google Hirdetések