
CÍMLAP
Reiter István
C#
TARTALOM, BEVEZETŐ
Tartalom
1 Bevezető
1.1 A jegyzet jelölései
1.2 Jogi feltételek
2 Microsoft .NET Framework
2.1 A .NET platform
2.2 A C# programozási nyelv
2.3 Alternatív megoldások
3 "Hello C#!"
3.1 A C# szintaktikája
3.2 Névterek
4 Változók
4.1 Deklaráció és definíció
4.2 Típusok
4.3 Lokális és globális változók
4.4 Referencia- és értéktípusok
4.5 Referenciák
4.6 Boxing és unboxing
4.7 Konstansok
4.8 A felsorolt típus
4.9 Null típusok
4.10 A dinamikus típus
5 Operátorok
5.1 Operátor precedencia
5.2 Értékadó operátor
5.3 Matematikai operátorok
5.4 Relációs operátorok
5.5 Logikai és feltételes operátorok
5.6 Bit operátorok
5.7 Rövid forma
5.8 Egyéb operátorok
6 Vezérlési szerkezetek
6.1 Szekvencia
6.2 Elágazás
6.3 Ciklus
7 Gyakorló feladatok
7.1 Szorzótábla
7.2 Számológép
7.3 Kő - Papír - Olló
7.4 Számkitaláló játék
8 Típuskonverziók
8.1 Ellenőrzött konverziók
8.2 Is és as
8.3 Karakterkonverziók
9 Tömbök
9.1 Többdimenziós tömbök
10 Stringek
10.1 Metódusok
10.2 StringBuilder
10.3 Reguláris kifejezések
11 Gyakorló feladatok II.
11.1 Minimum- és maximumkeresés
11.2 Szigetek
11.3 Átlaghőmérséklet
11.4 Buborékrendezés
12 Objektum-orientált programozás - elmélet
12.1 UML
12.2 Osztály
12.3 Adattag és metódus
12.4 Láthatóság
12.5 Egységbezárás
12.6 Öröklődés
13 Osztályok
13.1 Konstruktorok
13.2 Adattagok
13.3 Láthatósági módosítók
13.4 Parciális osztályok
13.5 Beágyazott osztályok
13.6 Objektum inicializálók
13.7 Destruktorok
14 Metódusok
14.1 Paraméterek
14.2 Visszatérési érték
14.3 Kiterjesztett metódusok
15 Tulajdonságok
16 Indexelők
17 Statikus tagok
17.1 Statikus adattag
17.2 Statikus konstruktor
17.3 Statikus metódus
17.4 Statikus tulajdonság
17.5 Statikus osztály
18 Struktúrák
18.1 Konstruktor
18.2 Destruktor
18.3 Adattagok
18.4 Hozzárendelés
18.5 Öröklődés
19 Gyakorló feladatok III.
19.1 Faktoriális és hatvány
19.2 Gyorsrendezés
19.3 Láncolt lista
19.4 Bináris keresőfa
20 Öröklődés
20.1 Virtuális metódusok
20.2 Polimorfizmus
20.3 Lezárt osztályok és metódusok
20.4 Absztrakt osztályok
21 Interfészek
21.1 Explicit interfészimplementáció
21.2 Virtuális tagok
22 Operátor kiterjesztés
22.1 Egyenlőség operátorok
22.2 A ++/-- operátorok
22.3 Relációs operátorok
22.4 Konverziós operátorok
22.5 Kompatibilitás más nyelvekkel
23 Kivételkezelés
23.1 Kivétel hierarchia
23.2 Kivétel készítése
23.3 Kivételek továbbadása
23.4 Finally blokk
24 Gyakorló feladatok IV.
24.1 IEnumerator és IEnumerable
24.2 IComparable és IComparer
24.3 Mátrix típus
25 Delegate-ek
25. Események
26 Generikusok
26.1 Generikus metódusok
26.2 Generikus osztályok
26.3 Generikus megszorítások
26.4 Öröklődés
26.5 Statikus tagok
26.6 Generikus gyűjtemények
26.7 Generikus interfészek, delegate -ek és események
26.8 Kovariancia és kontravariancia
27 Lambda kifejezések
27.1 Generikus kifejezések
27.2 Kifejezésfák
27.3 Lambda kifejezések változóinak hatóköre
27.4 Névtelen metódusok kiváltása lambda kifejezésekkel
28 Attribútumok
29 Unsafe kód
29.1 Fix objektumok
29.2 Natív DLL kezelés
30 Többszálú alkalmazások
30.1 Application Domain -ek
30.2 Szálak
30.3 Aszinkron delegate-ek
30.4 Szálak létrehozása
30.5 Foreground és background szálak
30.6 Szinkronizáció
30.7 ThreadPool
31 Reflection
32 Állománykezelés
32.1 Olvasás/írás fileból/fileba
32.2 Könyvtárstruktúra kezelése
32.3 In-memory streamek
32.4 XML
32.5 XML DOM
32.6 XML szerializáció
33 Konfigurációs file használata
34 Hálózati programozás
34.1 Socket
34.2 Blokk elkerülése
34.3 Több kliens kezelése
34.4 TCP és UDP
35 LINQ To Objects
35.1 Nyelvi eszközök
35.2 Kiválasztás
35.3 Szűrés
35.4 Rendezés
35.5 Csoportosítás
35.6 Listák összekapcsolása
35.7 Outer join
35.8 Konverziós operátorok
35.9 "Element" operátorok
35.10 Halmaz operátorok
35.11 Aggregát operátorok
35.12 PLINQ - Párhuzamos végrehajtás
36 Visual Studio
36.1 Az első lépések
36.2 Felület
36.3 Debug
36.4 Debug és Release
37 Osztálykönyvtár
Bevezető
Általában ez az a rész, ahol a szerző bemutatkozik, kifejti a motivációit
illetve köszönetet mond a környezete segítségéért. Nem fogok nagy
meglepetést okozni, ez most is így lesz.
Az elmúlt két évben, mióta a jegyzet létezik rengeteg levelet kaptam,
különféle témában. Egy közös pont viszont mindegyikben volt: a levélírók
egy idősebb emberre számítottak, számos esetben tanárnak gondoltak. Ez
alapvetően nem zavar, sőt jól esik, hiszen ez is bizonyítja, hogy sikerült
egy "érett", mindenki számára emészthető könyvet készítenem. Most viszont
- abból az alkalomból, hogy a jegyzet életében ekkora esemény történt, úgy
érzem ideje "hivatalosan" bemutatkoznom:
Reiter István vagyok, 24 éves programozó. Bő tíz éve foglalkozom
informatikával, az utóbbi hatot pedig már a "sötét" oldalon töltöttem.
Elsődlegesen (vastag)kliens oldalra specializálódtam: ez ebben a pillanatban
a WPF/Silverlight kettőst jelenti - bár előbbi közelebb áll a szívemhez.
Jelenleg - munka mellett - az ELTE Programtervező Informatikus szakán
folytatok tanulmányokat.
2008-ban elindítottam szakmai blogomat a "régi" msPortal-on - ez ma a
devPortal akadémiai szekciójaként szolgál - és ekkor született meg bennem
egy kisebb dokumentáció terve, amely összefoglalná, hogy mit kell a
C# nyelvről tudni. Elkezdtem írni, de az anyag egyre csak nőtt,
terebélyesedett és végül megszületett a jegyzet első százegynéhány oldalas
változata. A pozitív fogadtatás miatt folytattam az írást és néhány hónap
után az eredeti, viszonylag összeszedett jegyzetből egy óriási, kaotikus,
éppenhogy használható "massza" keletkezett.
Ez volt az a pont, ahol lélekben feladtam az egészet, nem volt kedvem,
motivációm rendberakni.
Eltelt több mint fél év, megérkezett 2010 és elhatároztam, hogy - Újévi
fogadalom gyanánt - feltámasztom a "szörnyeteget". Az eredeti jegyzet
túl sokat akart, ezért úgy döntöttem, hogy kiemelem az alapokat - ez
gyakorlatilag a legelső változat - és azt bővítem ki. Ez olyannyira
jól sikerült, hogy közel háromszoros terjedelmet sikerült elérnem a
kiinduláshoz képest.
[...]