Table Of ContentA könyv nyomtatott verziója megvásárolható a könyvesboltokban,
és a kiadó webáruházában: www.joskiado.hu
Reiter István
C# programozás
lépésről lépésre
JEDLIK OKTATÁSI STÚDIÓ
Budapest, 2012
Minden jog fenntartva.
A szerző és a kiadó a könyv írása során törekedtek arra, hogy a leírt tartalom a lehető legpontosabb és
naprakész legyen. Ennek ellenére előfordulhatnak hibák, vagy bizonyos információk elavulttá válhattak.
A példákat és a módszereket mindenki csak saját felelősségére alkalmazhatja. Javasoljuk, hogy felhasználás
előtt próbálja ki és döntse el saját maga, hogy megfelel-e a céljainak. A könyvben foglalt információk
felhasználásából fakadó esetleges károkért sem a szerző, sem a kiadó nem vonható felelősségre.
Az oldalakon előforduló márka- valamint kereskedelmi védjegyek bejegyzőjük tulajdonában állnak.
© Reiter István, 2012
Borító: Varga Tamás
Anyanyelvi lektor: Dr. Bonhardtné Hoffmann Ildikó
Kiadó: Jedlik Oktatási Stúdió Kft.
1215 Budapest, Ív u. 8-12.
Internet: http://www.jos.hu
E-mail: [email protected]
Felelős kiadó: a Jedlik Oktatási Stúdió Kft. ügyvezetője
Nyomta: LAGrade Kft.
Felelős vezető: Szutter Lénárd
ISBN: 978-615-5012-17-4
Raktári szám: JO-0340
E
LŐSZÓ
Amikor 2008. augusztusában elkészültem ennek a könyvnek az első változatával még problémát okozott átlépni
a „bűvös” 100 oldalas határt. Ha jól emlékszem, végül 108 oldal lett, szerencsére már csak az Internet egy sötét
sarkában lehet megtalálni.
Érdekes módon ezúttal is az oldalszám okozott gondot, igaz, fordult a kocka: valamivel több mint 300 oldalt
kellett kitöltenem, némi kompromisszum árán sikerrel is jártam.
Ha jobban belegondolok, az elmúlt 4 évem alapjaiban határozta meg ez a könyv. Rengeteget köszönhetek neki,
de őszintén szólva néha gyűlöltem is. Valójában most is ezt teszem, hiszen éjjel 11 van és álmos vagyok.
4 év alatt elképesztő változáson esett át az informatika világa. Ebben a pillanatban is újabb csodák születnek.
Borzalmasan nehéz lépést tartani a technológia végtelen evolúciójával, szinte lehetetlennek látszó feladat.
Ennek a könyvnek a célja, hogy olyan alapokat nyújtson, amelyre nyugodtan támaszkodhatunk a kalandos úton,
amelyet szoftverfejlesztésnek hívnak.
Több mint 40000 olvasó többszáz jótanácsának, visszajelzésének eredménye az amit most a kezedben tartasz!
Nem fogok hazudni, ez nem egy mindentudó lexikon és nem is csodalámpa, amit megdörzsölve azonnal fejedbe
száll a tudás - bár próbálkozni lehet. Tekintsd társnak, jóbarátnak, aki utat mutat, ha elakadtál. Remélem, épp
annyi örömet okoz majd Neked, mint nekem tette!
Kötelességem köszönetet mondani mindazoknak, akik hozzájárultak a könyv létrejöttéhez! Sajnos annyi helyem
nincs, hogy mindenki elférjen, mégis szeretném kiemelni néhányukat:
Kovács Gyula és Balázs Gábor tanár uraknak, a gyömrői Teleki László Gimnázium és Informatikai Szakközép–
iskolából.
Lippé Szabolcsnak és a Microsoft Magyarországnak, köszönöm a lehetőséget, remélem hamarosan elérjük a
hatszámjegyű letöltésszámot is!
Ecsegi Szandrának, hogy végig mellettem állt, rámutatott olyan dolgokra, amik nekem eszembe sem jutottak.
Köszönöm.
A könyv és a hozzátartozó programozási példák a weben is elérhetőek a Devportal.hu oldalon.
Tóalmás, 2012. augusztus
Reiter István
5
6
T
ARTALOMJEGYZÉK
MICROSOFT .NET FRAMEWORK ___________________________________________________________ 15
A .NET platform ___________________________________________________________________________ 15
MSIL/CIL _________________________________________________________________________________ 15
Fordítás és futtatás ________________________________________________________________________ 16
BCL _____________________________________________________________________________________ 16
A C# programozási nyelv ____________________________________________________________________ 16
Alternatív megoldások _____________________________________________________________________ 16
ISMERKEDÜNK A NYELVVEL _______________________________________________________________ 18
Visual Studio _____________________________________________________________________________ 18
Hello World! ______________________________________________________________________________ 18
A C# szintaktikája __________________________________________________________________________ 21
Kulcsszavak ______________________________________________________________________________ 22
Megjegyzések _____________________________________________________________________________ 22
Névterek _________________________________________________________________________________ 23
VÁLTOZÓK ____________________________________________________________________________________ 24
Deklaráció és definíció______________________________________________________________________ 24
Típusok __________________________________________________________________________________ 24
Lokális és globális változók __________________________________________________________________ 25
Referencia- és értéktípusok _________________________________________________________________ 25
Referenciák ______________________________________________________________________________ 27
Boxing és unboxing ________________________________________________________________________ 28
Konstansok _______________________________________________________________________________ 30
A felsorolt típus ___________________________________________________________________________ 30
Null típusok ______________________________________________________________________________ 32
A dinamikus típus _________________________________________________________________________ 33
7
OPERÁTOROK ________________________________________________________________________________ 35
Operátor precedencia ______________________________________________________________________ 35
Értékadó operátor _________________________________________________________________________ 36
Matematikai operátorok ____________________________________________________________________ 36
Relációs operátorok ________________________________________________________________________ 37
Logikai és feltételes operátorok ______________________________________________________________ 37
Bit operátorok ____________________________________________________________________________ 40
Rövid forma ______________________________________________________________________________ 43
Egyéb operátorok _________________________________________________________________________ 43
VEZÉRLÉSI SZERKEZETEK __________________________________________________________________ 46
Szekvencia _______________________________________________________________________________ 46
Elágazás _________________________________________________________________________________ 46
Ciklus ___________________________________________________________________________________ 51
GYAKORLÓ FELADATOK ____________________________________________________________________ 57
Szorzótábla _______________________________________________________________________________ 57
Számológép ______________________________________________________________________________ 60
Kő – Papír – Olló___________________________________________________________________________ 62
Számkitaláló játék _________________________________________________________________________ 64
TÍPUSKONVERZIÓK _________________________________________________________________________ 68
Ellenőrzött konverziók ______________________________________________________________________ 68
Is és as __________________________________________________________________________________ 69
Karakterkonverziók ________________________________________________________________________ 70
TÖMBÖK ______________________________________________________________________________________ 71
Többdimenziós tömbök _____________________________________________________________________ 72
STRINGEK _____________________________________________________________________________________ 75
Metódusok _______________________________________________________________________________ 76
StringBuilder _____________________________________________________________________________ 77
8
Reguláris kifejezések _______________________________________________________________________ 78
GYAKORLÓ FELADATOK II. ________________________________________________________________ 81
Minimum- és maximumkeresés ______________________________________________________________ 81
Szigetek _________________________________________________________________________________ 81
Átlaghőmérséklet _________________________________________________________________________ 82
Buborékrendezés __________________________________________________________________________ 83
OBJEKTUM-ORIENTÁLT PROGRAMOZÁS - ELMÉLET __________________________________ 85
UML ____________________________________________________________________________________ 85
Osztály __________________________________________________________________________________ 85
Adattag és metódus ________________________________________________________________________ 85
Láthatóság _______________________________________________________________________________ 86
Egységbezárás ____________________________________________________________________________ 86
Öröklődés ________________________________________________________________________________ 86
OSZTÁLYOK __________________________________________________________________________________ 88
Konstruktorok ____________________________________________________________________________ 89
Adattagok ________________________________________________________________________________ 91
Láthatósági módosítók _____________________________________________________________________ 92
Parciális osztályok _________________________________________________________________________ 92
Beágyazott osztályok _______________________________________________________________________ 94
Objektuminicializálók ______________________________________________________________________ 95
Destruktorok _____________________________________________________________________________ 95
METÓDUSOK ________________________________________________________________________________ 103
Paraméterek ____________________________________________________________________________ 105
Visszatérési érték _________________________________________________________________________ 110
Kiterjesztett metódusok ___________________________________________________________________ 111
TULAJDONSÁGOK ___________________________________________________________________________ 113
INDEXELŐK __________________________________________________________________________________ 115
9
STATIKUS TAGOK __________________________________________________________________________ 117
Statikus adattag __________________________________________________________________________ 117
Statikus konstruktor ______________________________________________________________________ 118
Statikus metódus _________________________________________________________________________ 119
Statikus tulajdonság ______________________________________________________________________ 120
Statikus osztály __________________________________________________________________________ 120
STRUKTÚRÁK _______________________________________________________________________________ 121
Konstruktor _____________________________________________________________________________ 121
Destruktor ______________________________________________________________________________ 122
Adattagok _______________________________________________________________________________ 123
Hozzárendelés ___________________________________________________________________________ 123
Öröklődés _______________________________________________________________________________ 125
OSZTÁLYKÖNYVTÁRAK ___________________________________________________________________ 126
GYAKORLÓ FELADATOK III. ______________________________________________________________ 130
Faktoriális és hatvány _____________________________________________________________________ 130
Gyorsrendezés ___________________________________________________________________________ 131
Láncolt lista _____________________________________________________________________________ 133
Bináris keresőfa __________________________________________________________________________ 134
ÖRÖKLŐDÉS _________________________________________________________________________________ 138
Virtuális metódusok ______________________________________________________________________ 139
Polimorfizmus ___________________________________________________________________________ 141
Lezárt osztályok és metódusok ______________________________________________________________ 142
Absztrakt osztályok _______________________________________________________________________ 142
INTERFÉSZEK _______________________________________________________________________________ 145
Explicit interfészimplementáció _____________________________________________________________ 147
Virtuális tagok ___________________________________________________________________________ 148
10