Programozás .NET-ben Szi Brigitta 2014. szeptember. 26.

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Objective- C Bereczki Gréta Tamara
3. előadás (2005. március 1.) Utasítások, tömbök
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
JavaScript.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Bevezetés a Java programozásba
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
C A C nyelv utasításai.
Mutatók, tömbök, függvények
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
Java programozási nyelv 2. rész – Vezérlő szerkezetek
Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások
PHP Webprogramozás alapjai
Célkeresztben az érettségi! A legjobb és leghatékonyabb eszközt akarjuk Kevesebb hibalehetőség, barátságos hibaüzenetek Kiváló fejlesztőeszköz Gyorsan.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Vizuális és web programozás II.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
Bevezetés a C++ programozási nyelvbe
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás Az adatokról C# -ban.
C nyelv utasításai.
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Ciklusok (iterációk).
Operátorok Értékadások
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Készítette: Lipp Marcell
Java programozási nyelv Vezérlési szerkezetek
Objektum orientált programozás
A Visual Basic nyelvi elemei
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
C Programozási alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Informatikai gyakorlatok 11. évfolyam
a programegységek között
Kifejezések C#-ban.
Gépészeti informatika (BMEGEMIBXGI)
Programozási nyelvek típusossága.
Beépített függvények használata programozáskor
Programozás C# -ban Elágazások.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
A CLIPS keretrendszer
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
ITERÁCIÓ.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Előadás másolata:

Programozás .NET-ben Szi Brigitta 2014. szeptember. 26.

A .NET A 90-es évek közepén a Sun MicroSystems kiadta a Java platform első nyilvános változatát. Erre válaszképp a Microsoft a 90-es évek végén elindította a Next Generations Windows Services projektet. Ebből lett a .NET. A Visual Studio 6.0 fejlesztőrendszer átdolgozásaként jelent meg. Majd az évek során teljesen átvette az uralmat a Microsoft fejlesztői palettáján.

A .NET framework kialakításának főbb szempontjai Gyors és biztonságos programfejlesztés Megbízható környezetben való program futtatás Különböző HW platformok támogatása hasonló komponensekkel Hálózati megoldások támogatása Adatok több szintű típusellenőrzése Forrás: Molnár Csaba diasora (Bevezetés)

A .NET platform A .NET tulajdonképpen a CLI (Common Language Infrastructure) egy implementációja CLI- szabályrendszer, ami maga is több részre oszlik: CTS CLS VES/CLR

CTS – (Common Type System), az adatok kezelését, a memóriában való megjelenést , egymással lévő interakciót, stb. írja le. CLS – (Common Language Specification), A CLI kompatibilis nyelvekkel kapcsolatos elvárásokat tartalmazza VES – (Virtual Execution System), magát a futási környezetet specifikálja. CLR (Common Language Runtime)-nek is szokták nevezni. Sokan virtuális gépként is azonosítják, azonban ez téves. Nincs .NET virtuális gép.

CIL- Common Intermediate Language Ez egy egységes közbenső nyelv/kód, amelyre minden CLI nyelvben megírt kód fordul Korábban MSIL(Microfot Common Intermediate Language)-nek hívták Ezt a CIL kódot a tényleges futás során egy JIT (just in time) fordító alakítja át natív kóddá, amit már a processzor tud kezelni. A CIL hasonlí a Java byte-kódra Forrás: Molnár Csaba diasora (Bevezetés)

Osztálykönyvtárak Forrás: Molnár Csaba diasora (Bevezetés)

BCL- Base Class Library Minden .NET Framework által támogatott nyelvből elérhető Rengeteg közös osztályt tartalmaz Részhalmaza a FCL (Framework Class Library)-nek Tulajdonképpen az alapvető feladatok (fájl olvasás-írás, adatbáziskezelés, stb) elvégzéséhez szükséges eszközöket tartalmazza. Az összes többi könyvtár ezekre épül. Forrás: részben Molnár Csaba diasora (Bevezetés)

WinForms - felhasználói felület kialakítása ASP.NET - web programozás ADO.NET – adatelérés támogatása

WPF (Windows Presentation Foundation) – Látványos felhasználói felületek kialakítása WCF (Windows Communication Foundation) – Munkafolyamat által vezérelt alkalmazás készítése WCS (Windows CardSpace) – Internetes erőforrások eléréséhez szükséges azonosítás gyors és biztonságos elérése Forrás: Molnár Csaba diasora (Bevezetés)

LINQ (Language Integrated Query) – SQL szerű adatelérést biztosít különböző adatszerkezeteken ADO.NET Entity Framework – Üzleti alkalmazások és szolgáltatások hatékony fejlesztése

C# nyelv A .NET fő programozási nyelve Professzionális, Neumann-elvű, nagy programok írására is alkalmas nyelv A program több fordítási egységből áll Egy sorba több utasítás is írható Tisztán objektumorientált és komponens orientált nyelv is egyben, típusbiztos, általános felhasználású nyelv Nem létezik nem menedzselt, natív módban futó C# program Rendelkezik szemétgyűjtő mechanizmussal is A mutatók csak unsafe módban használhatóak A destruktorok nem érhetőek el Csak egyszeres öröklés, de több interfész Típusbiztos, azaz egy implicit konverzió, a biztonságos konverzió Tulajdonságok használata Érték illetve referencia típusú változók Nincs mutatóhasználat Függvények – definíciók nem ágyazhatóak egymásba

Hierarchikus névterekben használt osztályok Privát- , statikus – konstruktor Egyszeres öröklés Operátor definiálási lehetőség Kivételkezelés megvalósítása Párhuzamos végrehajtású szálak definiálhatósága

A C# nyelv alapjai

Szintaktika A C# nyelv C stílusú szintaktikával rendelkezik Az egyes utasítások végén „ ; ” áll A kis- és nagybetűk különbözőek pl. Alma ≠ alma A program egységeit blokkokkal jelöljük („{„ , „}”)

Kulcsszavak

A kulcsszavak különleges jelentőséggel bírnak Az előre meghatározott jelentésükön kívül másra nem használhatóak A legtöbb fejlesztőeszköz megszínezi a kulcsszavakat

Speciális kulcsszavak

Megjegyzések

Névterek Egy modul/osztály tetszőleges névtér része lehet A névtér egy virtuális doboz, amelyben a logikailag összefüggő osztályok, metódusok és minden más vannak A névtérben fontos, hogy az azonosítónak egyedinek kell lennie A névtér megadása maga nem kötelező, azonban erősen ajánlott Ugyanis, ha nem adjuk meg akkor a névtelen(név nélküli) névtér része lesz a kód Nagyságrendileg kb 10.000 nevet és azonosítót tartalmaz, ez természetesen folyamatosan nő

Névterek használata

Változók

A C# szigorúan típusos nyelv Minden változó típusát ismerni kell fordítási időben A változók lehetnek külsők – függvényen kívüliek vagy belsők- függvényen belüliek A belső változók lehetnek dinamikus vagy statikus élettartamúak Dinamikus- automatikus, azaz élettartama a blokkban való tartózkodás idejére korlátozódik. Tehát a végrehajtás befejeztével a dinamikus változók megszűnnek Statikus – ilyen típusú belső változót nem tudunk deklarálni A függvények statikusak, pl a Main függvény

A változók két kategóriája referencia típus – osztály típusú változók, melyek a dinamikus memóriában helyezkednek el értéktípus – nem osztály típusú változók, inicializálás hiányában a fordító 0 értékre állítja be ezeket.

Formai megkötések: Deklaráció: Első karakter betű vagy alulvonás, a többi karakter szám is lehet, ékezetes karakterek szintén megengedettek Deklaráció: Típus változónév; Típus változónév = kezdőérték; Típus változónév1, változónév2 = kezdőérték;

Változók (példa)

Típusok

Típusok folyt.

Implicit, nem nevesített típusok (példa) A metódus hatókörében (lokálisan) deklarált változó típusának meghatározását a fordítóra bízhatjuk Ez nem azt jelenti, hogy nem típusos változót használunk A típus meghatározása értékadáskor történik (deklaráláskor kötelező) A típus nem változtatható meg, de konverziók végrehajthatók Javasolt használata: Névtelen típusok és lekérdezés-kifejezések során (LINQ)

Implicit, nem nevesített típusok (példa)

Adatok becsomagolása, kibontása (boxing, unboxing) Minden elemi típushoz tartozik egy referencia típus Akkor szükséges ha valahol referencia típust várunk, azonban értéktípusunk van A becsomagolás implicit, azaz automatikus. A boxing az a folyamat, amely megengedi, egy értéktípusnak, hogy úgy viselkedjen, mint egy referenciatípus. Működése: A rendszer előkészíti az értéktípus valódi típusának megfelelő keretet (dobozt), amely tartalmazza az eredeti változó adatait, illetve az összes szükséges információt, hogy referenciatípusként tudjon működni.

A kibontás explicit, azaz ki kell kényszeríteni A kibontás explicit, azaz ki kell kényszeríteni. Az unboxing a boxing ellentéte. A bedobozolt értéktípusból kinyerjük az eredeti értéket. Nullázható (nullable) típusok esetén a helyzet bonyolódik (később…)

Ki- és becsomagolás (példa)

Konstansok Kezdőértékkel ellátott adatmezőket és a lokális változókat a const szóval konstanssá tehetjük A konstansoknak egyszer adhatunk értéket, a deklarációnál Mezőneveknél a readonly is használható, de csak osztály szinten, metódusban nem A kettő közti különbség: A const konstanst a fordító értékeli ki A readonly mezők a futás során kapnak értéket, így konstruktorban is inicializálhatóak

Konstansok (példa)

Felsorolt típus Ez egy olyan adatszerkezet, amely meghatározott értékek névvel ellátott halmazát képviseli Névtérben és osztályban egyaránt elhelyezhetőek Kulcsszava az enum Deklarációja: enum azonosító [:típus] {konst1[=érték], konst2[=érték], …};

Ha nem adunk neki értékeket, akkor a nevekhez 0-tól egyesével egész számokat rendel. A felsorolástípus nevével változókat deklarálunk A típus elemeit a típusnév után ponttal elválasztva érjük el A tagokhoz rendelt egész értéket típuskényszerítéssel kapjuk meg

Ha nem egész, hanem bit típusú konstansokra van szükség, akkor a „[Flags]” attribútimmal tudjuk megadni Pl. Ebben az esetben az elemekkel bitműveleteket végezhetünk Természetesen mivel ez a típus a System.Enum megfelelője, ezért rendelkezik annak jellemzőivel is. Két legjellemzőbb: GetHashCode(), ToString()

Nullázható típusok (nullable) A nyelvben megkülönböztetjük az érték és a referencia típusokat A referencia típusok inicializálás előtt null értéket vesznek fel, illetve mi magunk is beállíthatjuk ezt Érték típusoknál alapesetben a változó nem lehet null érték Az érték típus a deklaráció pillanatában nulla értékkel töltődik fel

Probléma ? Megoldás Probléma – nem tudjuk, hogy kapott-e már értéket a változó Megoldás – nullázható típus használata Jelölése: Nullable <érték_változó>változónév; érték_változó ? változónév;

Nullázható típusok (példa)

Kifejezése, műveletek, operátorok

Operátorok Programozás során utasításokat adunk a számítógépnek A kifejezések operátorokból, operandusokból és ezek kombinációjából jönnek létre. Az operátorok lehetnek: Egy- (unáris) Két- (bináris) és Háromoperandusúak (ternáris)

Néhány lényegesebb különbség: A C# és a Java kifejezései és operátorai nagyban hasonlítanak egymáshoz. Néhány lényegesebb különbség: Csonkolt logikai operátorok Alapértelmezett vagy Névtér alias operátor Lambda kifejezés operátora is operátor as operátor typeof operátor

„csonkolt” logikai operátor Ahogy a Java-ban, úgy a C#-ban is megengedett ez az operátor ||->| , &&->& Különbség, hogy a logikai operátorok az eredménytől függetlenül kiértékelik a teljes kifejezést

Alapértelmezett vagy Jelölése: ?? A nullázható típusokhoz kötődik Ha egy változónak még nincs értéke, akkor a jobb oldali operandus értékét veszi fel

Névtér alias operátor Jelölése: :: Általában névterekben dolgozunk, de lehetőségünk van a névtereken kívül is osztályokat elhelyezni Ha a névtérben lévő osztály elfedi a névtéren kívülit, akkor „global::osztálynév” formában érhetjük el

Lambda kifejezés operátora Jelölése: => A lambda kifejezés tulajdonképpen a névtelen metódus elegánsabb változata A kifejezés delegált típust határoz meg, emiatt a használat előtt definiálni kell ilyen változót (Minden lambda kifejezés tartalmaz lambda operátort) Az operátor bal oldalán a bemenő változók, jobb oldalán a bemenetre alkalmazott kifejezés áll

is operátor Logikai operátor Futásidejű típus lekérdezésére használjuk Egy objektumról megmondja, hogy a bal oldali operandus a jobb oldali típusnak változója e

as operátor Kétoperandusú típuskényszerítés A bal oldali kifejezést a jobb oldali referencia típusra alakítja, ha tudja Ha sikertelen az alakítás, akkor null értéket ad eredménynek

typeof operátor Típusinformációkhoz tudunk hozzájutni általa Egy Syste.Type típusú objektumot készít, és ennek az objektumnak a mezőfüggvényeivel és tulajdonságaival tudunk típusinformációhoz jutni Több metódusa és tulajdonsága is van

Utasítások

Utasítások Az operációs rendszer a Main függvénynek adja át a vezérlést, majd a függvénytörzs egymás után következő utasításait hajtja végre, ezután tér vissza a vezérlés az operációs rendszerhez. A programvezérlés menetét az utasítások szekvenciája szabja meg. Utasítások fajtái – Összetett utasítás Kifejezés utasítás Elágazás utasítás Ciklus utasítás Ugró utasítás

Összetett utasítás Ahol elhelyezhetünk utasítást, ott természetesen elhelyezhetünk összetett utasítást is. Az összetett utasítás/blokk kapcsos zárójelek között felsorolt utasítások listája. A blokkban változókat is definiálhatunk, ezek a bokkban lokálisak lesznek. A blokkok tetszőlegesen egymásba ágyazhatóak.

Kifejezés utasítás Az utasítás formája : „kifejezés;” Az utasítás speciális formája, ha elmarad a kifejezés. Ez az üres, vagy nulla utasítás. Természetesen az üres vagy nulla utasításnak nem igazán van sok értelme. C#-ban az utasítások végére minden esetben pontosvessző kerül.

Elágazás utasítás Az elágazásoknak kétféle típusa van: Kétfelé elágazó Többfelé elágazó A kétfelé elágazó utasítás tulajdonképpen az „if” segítségével történik. A többfelé elágazó utasítás pedig a „switch” segítségével.

Kétféle elágazás Formája: if (kifejezés) utasítás; if (kifejezés) utasítás; else utasítás; Először a kifejezés értékelődik ki. Majd ha a kifejezés igaz, akkor az utána levő utasítás fog végre hajtódni, ha pedig hamis, akkor az „else” utáni (természetesen, ha van ilyen). Egymásba ágyazásnál az „else” ágat a legutóbbi „if”-hez tartozónak tekinti. Ha az igaz ágon összetett utasítást használunk, akkor nem kell utána pontosvessző. Hiszen ha mégis tennénk, akkor ez az „if” lezárását jelentené, és hibás lenne az utasításunk az „if” nélküli „else” használata miatt.

Többirányú elágazás Formája: switch (kifejezés) { case érték1: utasítás1; case érték2: utasítás2; … default: utasítás; }; A „switch” utáni kifejezés nem csak egész, hanem szöveg értékű is lehet. Ha a kifejezés értéke a „case” után megadott értékkel nem egyezik meg, akkor a következő „case” utáni érték vizsgálata következik. Ha pedig egy „case” utáni érték azonos a kifejezés értékével, akkor az ez utáni utasítás hajtódik végre. A „case” belépési pont után csak egy érték adható meg, intervallum vagy több érték megadása nem megengedett. Minden elágazást kötelező valamilyen vezérlésátadással befejezni („break”, „return”), még a „default” ágat is.

Ciklus utasítás A ciklus utasításnak 4 formája alkalmazható C#-ban. while do for foreach

„while” ciklus Formája: while (kifejezés) utasítás; Először értelemszerűen a zárójelben található kifejezés értékelődik ki, s ha igaz, akkor végrehajtásra került az utasítás (ciklusmag). Ezután újra a kifejezés kiértékelése kerül sorra, igaz érték esetén megint a ciklusmag kerül végrehajtásra. Ez addig folytatódik amíg a kifejezés igaz értéket ad eredményül. Ezt nevezik elöltesztelő ciklusnak is. Mivel az utasítás először kiértékeli a kifejezést és csak utána hajtja végre a ciklusmagot.

„do-while” ciklus Formája: do utasítás; while(kifejezés); Az utasítás végrehajtása után kiértékelésre kerül a kifejezés. Amíg a kifejezés igaz értéket ad, addig megismétli az utasítás végrehajtását (ciklusmag). Ezt nevezik hátultesztelő ciklusnak is.

„for” ciklus Formája: for(kif1;kif2;kif3) utasítás; Mindegyik kifejezés elmaradhat, de a kifejezések közötti pontosvessző nem! A kifejezések azért maradhatnak el, mert ha ez megtörténik, akkor a „while” true-ként tekinti a ciklust. A kifejezés egy típusdefiníciós kifejezés utasítás is lehet. kif1: inicializálás (pl. int i=0) kif2: ciklus feltétel (pl. i<10) kif3: ciklusváltozó léptetése (pl. i++) Nevezik számláló ciklusnak is.

„foreach” ciklus Formája: foreach(azonosító in adatszerkezet) utasítás; Az azonosítóval végigiterálunk az adatszerkezeten. Azaz, ez az utasítás egyenértékű a vektor-elemeken való végiglépdeléssel. Az azonosító, mint ciklusváltozó felveszi egyenként az adatszerkezet elemeit.

Az adatszerkezet lehet: Tömb Gyűjtemény Objektum, ami: Rendelkezik GetEnumerator() függvénnyel, Definiálja a MoveNext() függvényt, Definiálja a Current tulajdonságot. (vagy objektum, ami megvalósíja az IEnumerable és IEnumerator interfészeket.)

GetEnumerator() – eredményül kell adnia azt a típust, amilyen típusú elemeken lépdelünk végig. MoveNext() – az indexet aktuálisra állítja, és logikai visszatéréssel megadja, hogy van e még maradék elem. Current – az aktuális indexű elemét adja eredményül.

Ugró utasítások yield using lock (break) (continue) (return) (goto)

„yield” utasítás Általában a „return” vagy a „break” utasítással együtt használjuk: yield return yield break Egy felsorolható adatsorozatban a „yield return” utasítással adhatjuk vissza az elemek aktuális értékét. Az így kapott konstrukciót iterátornak nevezzük.

A felsorolhatóságot, iterálhatóságot nem kell feltétlen osztályhoz kötni. Egy metódus önmagában is teljesítheti a felsorolhatóság követelményét. Így a metódus visszatérési típusa IEnumerable.

„using” utasítás Kétféle környezetben szerepelhet: Direktíva, adott névtér, osztály használata Formája: using névtér_vagy_osztály; Mint külön utasítás. „using”, mint direktíva- Formája: using névtér_vagy_osztály; Hasonló a C# „include” és a Java „import” utasításához. Megmondja a fordítónak, hogy ennek a névtérnek a típusait használja. Használata nélkül teljes névvel is elérhetőek az osztályok. (using System; … Console.Write(); System.Console.Write();)

„using”, mint utasítás – Formája: using(objektum) {utasítások;} Egy ideiglenesen használt objektum esetén a „using” utasítás után a keretrendszer meghívja az objektum „Dispose” metódusát. Fájlműveletek esetén gyakran használt.

„using”, mint utasítás (példa)

„lock” utasítás Formája: lock(referencia) utasítás; Többszálú programvégrehajtáskor használatos. Ha egy kritikus utasítás blokk végrehajtásakor egy referencia blokkolására van szükség a biztonságos végrehajtáshoz, akkor ezt a „lock” utasítással tehetjük meg. A „lock” kulcsszó egy referenciát vár, ez pedig jellemzően a „this”, majd utána következik a kritikus blokk. A referenciaként kapott objektumot blokkolja, amíg az utasítás végre nem hajtódik. Pl. lock(this){ i=i+2; }

A „lock ” utasítás leggyakrabban használt paramétere a „this”, ha a védett változó vagy függvényutasítás nem statikus. Ha azonban statikus változóról vagy függvényutasításról van szó, akkor a „lock” referenciának az osztály típusát kell megadni.

break – hatására befejeződik a legbelső „while”, „do”, „for” vagy „switch” utasítás végrehajtása. continue – hatására a legbelső while, for, do ciklus utasításokat vezérlő kifejezések kerülnek kiértékelésre. return – a vezérlés visszatér a függvényből, a kifejezés értéke a visszaadott érték. goto – a vezérlés arra a pontra adódik, ahol a címke található.

Köszönöm a figyelmet! Felhasznált irodalom: Reiter István – C# programozás lépésről lépésre Molnár Csaba és Varga Ágnes diasorai Reiter István – C# jegyzet Illés Zoltán – Programozás C# nyelven