A kulcsszavak minden programozási nyelvben olyan védett, különleges kifejezések, amelyek a programozási nyelv alapját képezik. Ezen kifejezések nem használhatók változónevekként. Jelenleg csak felületesen lesz szó a kulcsszavakról. Részletesen a használatukkal a későbbi fejezetekben és a példakódokban fogunk megismerkedni.
A kulcsszavak C# esetén két kategóriára bonthatóak, mivel léteznek kontextusfüggő kulcsszavak is. Ezek bizonyos körülmények között nem használhatóak azonosítókként. A legjobb, ha ugyanúgy teljes értékű kulcsszavaknak tekintjük és nem használjuk őket más célokra.
abstract
Osztályok esetén alkalmazható módosító. Az ezzel a módosítóval megjelölt osztály csak más osztályok őseként használható. Absztrakt osztályon belül metódusokra és tulajdonságok megjelölésére is alkalmazható. Az absztrakt tagokat a leszármaztatott osztálynak implementálnia kell.
as
Típus konvertáló művelet, ami referencia típusok esetén alkalmazható. A művelet jobb oldalán található változó típusát alakítja át a kifejezés bal oldalán található típussá. Csak akkor lesz sikeres, ha a két típus egymással rokonságban áll.
base
Örököltetett osztályokban az ősosztály tagjaira, metódusaira tudunk vele hivatkozni.
bool
Logikai adattípus, amely true (igaz) vagy false (hamis) értéket vehet fel. A kulcsszó a keretrendszerben a System.Boolean típusra mutat.
break
Programvezérlő utasítás, ami ciklus vagy feltételes utasítás (switch – case) megszakításra szolgál.
byte
Egész szám adattípus 8 bites felbontással. Előjel nélküli egész számok tárolására szolgál. Értéke 0 és 255 között változhat. A kulcsszó a keretrendszerben a System.Byte típusra mutat.
case
Programvezérlő utasítás, ami a switch utasításon belül egy konkrét esetet jelöl.
catch
Programvezérlő utasítás, futás idejű kivételkezelés megvalósítására szolgál. A try utasítás után kell elhelyezni.
char
Karaktert jelölő adattípus, ami egy Unicode karaktert tárol UTF-16 kódolással. A kulcsszó a keretrendszerben a System.Char típusra mutat.
checked
Programvezérlő utasítás, ami egész számokat érintő műveleteken túlcsordulás vizsgálatot és jelzést végez.
class
Referencia típus jelzője, segítségével tudunk osztályokat készíteni. Egy osztály tartalmazhat metódusokat, adattagokat, tulajdonságokat, indexelőket, műveleteket és beágyazott típusokat is.
const
Érték típusok esetén alkalmazható módosító. Az ezzel a módosítóval megjelölt változó értéke már fordítási időben eldöntött és értéke a program futása során nem módosulhat.
continue
Programvezérlő utasítás, ami a break utasítás ellentéte. Csak ciklusokban alkalmazható. Az utasítás hatására a ciklus a következő végrehajtásra ugrik.
decimal
Lebegőpontos adattípus, ami 128 bites fix pontos számábrázolást valósít meg. Használatával minimalizálható a lebegőpontos számokon végzett műveleteknél keletkező kerekítési hiba. Ennek köszönhetően leginkább pénzügyi alkalmazásokban használatos. A kulcsszó a keretrendszerben a System.Decimal típusra mutat.
default
Programvezérlő utasítás, ami a switch utasításon belül azt az esetet jelöli, amikor egyik case ág sem volt igaz, vagyis ez az alapértelmezett utasítás.
delegate
Referencia típus, ami meghatározott formájú tagfüggvényeket tartalmazhat. A tagfüggvény formáját a delegate meghatározása írja le. Leginkább a C és C++ függvénymutatóihoz hasonlít.
do
Ciklusszervező utasítás. A ciklus tartalmának a végrehajtása mindaddig ismétlődik, amíg a ciklus végén lévő feltétel hamissá nem válik. A könyvben és számos helyen is do – while ciklusként hivatkoznak rá, mivel a blokkhoz tartozó feltételt a while kulcsszó vezeti be.
double
Lebegőpontos adattípus, ami IEEE754 szerinti 64 bites lebegőpontos értéket tartalmaz. A kulcsszó a keretrendszerben a System.Double típusra mutat.
else
Programvezérlő utasítás, amely egy olyan utasítást vagy utasításblokkot tartalmaz, ami csak akkor hajtódik végre, ha az utasítást megelőző if utasítás kiértékelése hamis.
enum
Egész szám alapú adattípus, amely előre meghatározott értékeket vehet fel. Alapértelmezetten az értékei 32 bites egész számként tárolódnak.
event
Események meghatározására szolgáló kulcsszó. Olyan delegate típust határoz meg, ami akkor hívódik meg, ha a programunkban egy bizonyos esemény bekövetkezik.
explicit
Olyan típus átalakító műveletet jelöl, ahol a felhasználónak kötelező kikötnie a cél típust. Alkalmazható referencia -és érték típusokon is.
extern
Metódusok esetén alkalmazható módosító. A futtatókörnyezeten kívüli natív függvények megjelölésére szolgál.
false
Logikai (bool) típusú változó esetén a hamis értéket jelöli.
finally
Programvezérlő utasítás, futás idejű kivételkezelés esetén egy olyan blokkot jelöl, ami a kivételkezelt utasítások után minden esetben (kivétel bekövetkezésekor is) lefut.
fixed
Változókra használható módosítószó, unsafe blokkban használható. A vele megjelölt változó fix memóriaterületre kerül, melynek tartalmát a szemétgyüjtő nem helyezheti át.
float
Lebegőpontos adattípus, ami IEEE 754 szerinti 32 bites lebegőpontos értéket tartalmaz. A kulcsszó a keretrendszerben a System.Single típusra mutat.
for
Ciklusszervező utasítás. Az utasítás három részből áll. Az első kezdeti beállításokat tartalmaz (kezdőérték), a második rész a cél feltételt határozza meg, míg a harmadik rész a ciklus előrehaladását biztosító utasításokat határozza meg.
foreach
Ciklusszervező utasítás, aminek a segítségével egy tömb, vagy egy IEnumerable felületet megvalósító kollekció elemeit tudjuk bejárni.
goto
Feltétel nélküli ugró utasítás, aminek a segítségével a program végrehajtását az aktuális pontról egy másik címkével megjelölt pontra tudjuk átugratni.
if
Programvezérlő utasítás, amely a mögötte álló blokkot csak akkor hajtja vége, ha a hozzá kapcsolt feltétel igaz.
implicit
Olyan típus átalakító műveletet jelöl, ahol a felhasználónak nem kell kikötnie a cél típust. A cél típus a cél változó típusából automatikusan kerül meghatározásra. Alkalmazható referencia -és érték típusokon is.
in
A foreach és a from kulcsszavakkal együtt alkalmazható. Az in kulcsszó után áll az a változó, amit bejárunk a ciklusban, vagy amiből az elemeket válogatjuk ki.
int
Egész szám adattípus 32 bites felbontással, előjeles számábrázolást valósít meg. A kulcsszó a keretrendszerben a System.Int32 típusra mutat.
interface
Segítségével olyan referencia típust hozhatunk létre, ami leírja egy típus tagjait, de nem határozza meg őket. Osztályok esetén a többszörös öröklés megvalósításának a módja.
internal
Elérés módosító, ami lehetővé teszi, hogy a vele megjelölt osztályt, metódust, tulajdonságot, adattagot csak azonos szerelvényen (assembly) belül tudjuk elérni.
is
Művelet, ami képes futási időben eldönteni, hogy a kifejezés bal oldalán található változó típusa megegyezik-e a kifejezés jobb oldalán álló típussal. Referencia -és érték típusok esetén is alkalmazható.
lock
Olyan blokkot jelöl, ami kritikus kódrészletet tartalmaz. A blokkban elhelyezett utasítássor egyszerre csak egy szál által végrehajtható.
long
Egész szám adattípus 64 bites felbontással, előjeles számábrázolást valósít meg. A kulcsszó a keretrendszerben a System.Int64 típusra mutat.
namespace
Segítségével a típusainkat csoportosíthatjuk. Segít a név ütközések elkerülésében és megkönnyíti a típusokra való hivatkozást.
nint és nuint
C# 9 óta használható típusok. Az nint egy egész számot definiál, ami 32 bites folyamatok esetén 32 bit méretű, míg 64 bites folyamatok esetén 64 bit méretű. Az nuint ugyanez, de előljel nélküli formátumban.
new
Objektumok példányosítására szolgáló művelet. Módosítóként is alkalmazható. Ebben az esetben az alaposztálytól származó tagok elrejtésére, felüldefiniálására szolgál az öröklési lánc megszakításával.
null
Referencia típusok esetén alkalmazható érték, ami azt jelzi, hogy a referencia nem mutat sehova.
object
A keretrendszerben a System.Object típusra mutat. C# esetén minden típus őse.
operator
Osztályok és struktúrák esetén a műveletek definiálásánál és átdefiniálásánál használt kulcsszó.
out
Metódusok esetén alkalmazható paraméter módosító. Az így megjelölt paraméter a metóduson belül csak írható és kötelező értéket kapnia a metódus vége előtt.
override
A polimorfizmus megvalósítására szolgáló kulcsszó. Az ősosztályban virtual és abstract módosítóval megjelölt tagoknak adhatunk vele új megvalósítást, ami felváltja a régit.
params
Metódusok esetén alkalmazható paraméter módosító. Azt jelzi, hogy a metódus változó paraméterszámmal is meghívható. A metódus definícióban csak az utolsó paraméter definiálásánál használható.
partial
Osztályok és metódusok esetén alkalmazható módosítószó. Azt jelzi, hogy az adott metódus vagy osztály definíciója több fájlon keresztül ível. Hasznos nagy méretű osztályok definiálásakor.
private
Elérés módosító, ami azt jelzi, hogy a vele megjelölt metódus, tulajdonság vagy adattag csak az adott osztályon, struktúrán belül érhető el. Osztályok/Struktúrák esetén azt jelzi, hogy az adott osztály csak az adott névtéren belül érhető el.
protected
Elérés módosító, ami azt jelzi, hogy a vele megjelölt metódus, tulajdonság vagy adattag csak az adott osztályon, struktúrán belül és a közvetlenül belőle leszármaztatott típusokban érhető el.
public
Elérés módosító, ami azt jelzi, hogy a vele megjelölt metódus, tulajdonság vagy adattag az adott osztályon, struktúrán kívülről is elérhető. Osztályok/Struktúrák esetén azt jelzi, hogy az adott osztály a névtéren kívül is elérhető.
record
C# 9 esetén típus, C# 10 esetén módosító osztályokhoz és struktúrákhoz. Ezzel a kulcsszóval megjelölt típusokhoz a fordító generálja az érték szerinti egyenlőséghez szükséges dolgokat, vagyis a típus úgy viselkedik bizonyos korlátokkal, mint ha érték típus lenne, még akkor is, ha referencia típusokat tartalmaz.
readonly
Referencia típusú adattagok esetén alkalmazható módosító, ami azt jelzi, hogy az adattag csak a konstruktoron belül és egyszer kaphat értéket. Értéke az osztály életciklusa során nem módosulhat.
ref
Metódusok esetén alkalmazható paraméter módosító. Az így megjelölt paraméter referenciaként kerül átadásra, ami azt jelenti, hogy a paraméter értékének módosulása a metóduson belül kihatással van az eredetileg átadott változó értékére.
return
Metódusban alkalmazható kulcsszó, segítségével értéket adhatunk vissza a metódusunkból. Végrehajtása után a program a metódus hívásának helyéről folytatódik.
sbyte
Egész szám adattípus 8 bites felbontással, előjeles számábrázolást valósít meg. A kulcsszó a keretrendszerben a System.Sbyte típusra mutat.
sealed
Osztályok esetén alkalmazható módosító. Meggátolja, hogy a megjelölt típus öröklésben részt vegyen.
short
Egész szám adattípus 16 bites felbontással, előjeles számábrázolást valósít meg. A kulcsszó a keretrendszerben a System.Int16 típusra mutat.
sizeof
Operátor, ami egy érték típus méretét adja vissza byte-ban.
stackalloc
Kulcsszó ami unsafe blokkban használható. Segítségével memóriát foglalhatunk a veremben. A lefoglalt memória méretét az adattípus mérete és a kulcsszó mellett álló kifejezés határozza meg. Egy mutatót ad vissza a lefoglalt memóriához, aminek a felszabadításáról a szemétgyűjtő nem gondoskodik.
static
Típus módosító. Osztályokon, metódusokon, adattagokon és tulajdonságokon alkalmazható. Osztályon alkalmazva az osztály csak statikusnak jelölt metódusokat, adattagokat és tulajdonságokat tartalmazhat. A statikus tagok az osztályon belül nem a példányhoz kötődnek, hanem a típushoz, így ezekből a program teljes életciklusa alatt egy létezik.
string
Referencia adattípus, ami szövegeket reprezentál. A szövegek UTF-16 kódolású karakterekből épülnek fel.
struct
Érték típus jelzője, segítségével tudunk struktúrákat készíteni. Egy struktúra tartalmazhat metódusokat, adattagokat, tulajdonságokat, indexelőket, műveleteket és beágyazott típusokat is.
switch
Programvezérlő utasítás, a program a további futását egy változó értékétől függővé teszi. Az értékek a case és a default utasításokkal adhatóak meg.
this
Csak példány (nem statikus) metódusokban és tulajdonságok kódjában alkalmazható. Az aktuális osztály példányát jelzi.
throw
Programvezérlő utasítás, kivétel kiváltására szolgál. A kivétel azt jelzi, hogy előre nem tervezhető vagy a normál használattól eltérő dolog történt a programunkban.
true
Logikai (bool) típusú változó esetén az igaz értéket jelöli.
try
Kivételkezelésre használt kulcsszó. Az utána álló blokkban megkísérli az utasítások végrehajtását. Ha ezek közül bármelyik kivételt vált ki, akkor a vezérlés az utána elhelyezett catch blokkban folytatódhat. A végén elhelyezhető finally blokk mindig lefut.
typeof
Egy objektum típusát kérdezi le. A típust System.Type osztályként kapjuk vissza, ami a reflection alapja.
uint
Egész szám adattípus 32 bites felbontással, előjel nélküli számábrázolást valósít meg. A kulcsszó a keretrendszerben a System.UInt32 típusra mutat.
ulong
Egész szám adattípus 64 bites felbontással, előjel nélküli számábrázolást valósít meg. A kulcsszó a keretrendszerben a System.UInt64 típusra mutat.
unchecked
Programvezérlő utasítás, ami egész számokat érintő műveleteken a túlcsordulás vizsgálatot és jelzést mellőzi. A checked ellentéte.
unsafe
Olyan kódrészletet jelöl, ami memória kezelés szempontjából nem biztonságos. Ilyen blokkokban tudunk alkalmazni mutatókat, amelyekkel kellő körültekintéssel optimalizálni és gyorsítani tudjuk a programunk végrehajtását.
ushort
Egész szám adattípus 16 bites felbontással, előjel nélküli számábrázolást valósít meg. A kulcsszó a keretrendszerben a System.UInt16 típusra mutat.
using
Névterek használatba vételére szolgál, illetve használható blokként IDisposable felületet megvalósító osztályoknál a típus használatát befejezve automatikus Dispose() metódushívásra.
virtual
A polimorfizmus megvalósítására szolgáló kulcsszó. Tagfüggvényeken és tulajdonságokon alkalmazható. Az így megjelölt tagok kódja egy örököltetett osztályban átdefiniálható.
void
Üres típus. Olyan metódusoknál alkalmazzuk, amelyeknek nem kell értékkel visszatérniük.
volatile
Azt jelzi, hogy az adott adattaghoz egyszerre több szál is hozzáférhet. Az így megjelölt változók a memóriában mindig ugyanott fognak elhelyezkedni.
while
Ciklusszervező utasítás. A ciklus tartalma addig ismétlődik, amíg a while után álló feltétel igaz.