Mi pontosan a különbség abban, ha delegálttal vagy interface-el kezelek egy eseményt?
Ezt most én sem értem.
Fejtsd ki bővebben(és nézd meg biztos ezek-e azok a kifejezések).
Illetve milyen nyelv, milyen program?
Mielőtt bárki is válaszolna, hagy tisztázzak benned valamit:
Az interface az egy olyan típus, ami megalkotja az olyan osztályoknak az 'arculatát', ahol megvalósításra (implementálásra) kerül.
A delegált lehetővé teszi az események megvalósítását, kvázi több függvényt tudsz rá feliratni (kevesebb megkötéssel mint egy interface-be, olvasd el milyen megkötéseket kell használj egy interface inicializálásnál).
Szerintem (szintén tanuló programozó szerint), az interface-nek és a delegate-nek kb. ennyi összefüggése lehet.
Hát a kettő között nem tudok túl sok párhuzamot vonni. Talán annyi hasonlóság van közöttük, hogy mindkettő egyfajta absztrakciós réteget biztosít, csak míg az interface osztályokra, addig a delegate függvényekre. AZ interface lényege, hogy megadhatsz egyfajta 'vázlatot', amiben deklarálhatod, milyen metódusokkal kell rendelkeznie egy osztálynak, így ha egy osztály implementálja azt az interface-t, akkor az összes benne foglalt metódust is implementálnia kell. Ennek röviden az a lényege, hogy kezelhetsz egymástól egyébként független osztályokat egy kalap alatt az interface-ük alapján. Egy nagyon ékes példa például az IComparable interface, ami egy CompareTo metódust deklarál, aminek a célja, hogy két objektum egymással összehasonlítható legyen (kisebb, nagyobb, egyenlő). Nagyon sok osztály valósítja meg ezt az interface-t, pl a legtöbb alap típust megvalósító osztály (Int32, String, Boolean, stb..), illetve te is implementálhatod ezt további, saját osztályokon. Ez az interface lényege röviden, egy biztosíték, hogy egy bizonyos soztály rendelkezik bizonyos metódusokkal.
A delegate ugyanakkor egy függvénytípust deklarál, ha úgy tetszik. Amikor egy delegate-et definiálsz, megadhatod hogy milyen visszatérési értékkel, és paraméterekkel rendelkezzen (magyarul megadhatsz egy függvény fejlécet). Viszont ennyi, konkrét működést függvénydefiníciót nem tartalmaz egy delegate. Viszont, ahogy az interface, ad egy biztosítékot, hogy a delegate-en keresztül megadott függvény ilyen visszatérési értékkel és paraméterrel fog rendelkezni. Ez azért nagyon jó, mert pl így megadhatsz függvényeket paraméterül egy másik függvénynek. Megmondhatod egy függvény fejlécében, hogy ő egy MyDelegate típusú paramétert fog majd kapni, és azt nem tudja ugyan, hogy pontosan mit fog csinálni, de azt tudja, hogy hogyan kell meghívni, és milyen értéket fog visszaadni. És ezután bármilyen megfelelő függvényt átadhatsz paraméterül. Tehát, akárcska az interface, semmilyen lényegi működést nem írsz le benne, de megadsz egy olyan 'vázlatot', amivel különböző, egymástől teljesen eltérő függvényt kezelhetsz egy kalap alatt. Például csinálhatsz egy olyan delegate-et, hogy BinaryOperation delegate-et, ami két integer értéket kér paraméterül, és egy integer értéket köp vissza. Ez a BinaryOperation pedig később tartalmazhat összeadást, kivonást, szorzást, modulószámítást, bármilyen kétváltozós integerműveletet. Így általános értelemben adhatsz meg függvényparaméterül binér műveletet, anélkül, hogy a konkrét műveletet előre specifikálnod kéne.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!